[BZOJ 3326] 数数
Link:
Solution:
明显是一道数位$dp$的题目,就是递推式复杂了点
先要求出一个数$\bar{n}$向添加一位后的$\bar{np}$的转化关系
令$res[\bar{n}]$为数$n$的权值和,
则$res[\bar{np}]=res[\bar{n}]+\sum_{i=1}^{len(n)} \bar{n[i...len(n)]p}$
令$suf[\bar{n}]$为数$n$的后缀和,
则$res[\bar{np}]=res[\bar{n}]+suf[\bar{np}]$
同时$suf$自己的递推式为:$suf[\bar{np}]=base*suf[\bar{n}]+(len(n)+1)*p$
再令$dgt[\bar{n}]$为数$n$的位数,
则$dgt[\bar{np}]=dgt[\bar{n}]+1$
上面的递推式虽然都只针对某一个数$n$,但完全可以逐层推广到之前所有数的和
使原来的$res,suf,dgt$分别表示$\sum res,\sum suf,\sum dgt$,$a$表示数的个数
再用第二维的$0/1$表示是否达到上界,算是数位$dp$的常规套路
剩下的递归式还是看代码吧……
Code:
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int MAXN=1e5+,MOD=; int B,l1,l2,dat1[MAXN],dat2[MAXN];
ll pre[MAXN],res[MAXN][],a[MAXN][],suf[MAXN][],dgt[MAXN][]; ll solve(int *dat,int l)
{
memset(res,,sizeof(res));memset(dgt,,sizeof(dgt));
memset(a,,sizeof(a));memset(suf,,sizeof(suf)); a[l+][]=;
for(int i=l;i;i--)
{
int cur=(i==l)?:B; a[i][]=a[i+][];
a[i][]=((cur-)+a[i+][]*B+a[i+][]*dat[i])%MOD;
dgt[i][]=(dgt[i+][]+a[i+][])%MOD;
dgt[i][]=((cur-)+(dgt[i+][]+a[i+][])*B%MOD+(dgt[i+][]+a[i+][])*dat[i]%MOD)%MOD;
suf[i][]=(suf[i+][]*B+dgt[i][]*dat[i])%MOD;
suf[i][]=(pre[cur]+(suf[i+][]*B%MOD*B%MOD+(dgt[i+][]+a[i+][])*pre[B]%MOD)+
(suf[i+][]*B*dat[i]%MOD+dgt[i][]*pre[dat[i]]%MOD))%MOD;
res[i][]=(res[i+][]+suf[i][])%MOD;
res[i][]=(res[i+][]*dat[i]%MOD+res[i+][]*B%MOD+suf[i][])%MOD;
}
return (res[][]+res[][])%MOD;
} int main()
{
scanf("%d",&B);
for(int i=;i<=B;i++) pre[i]=(pre[i-]+i-)%MOD; scanf("%d",&l1);
for(int i=l1;i>=;i--) scanf("%d",&dat1[i]);
scanf("%d",&l2);
for(int i=l2;i>=;i--) scanf("%d",&dat2[i]); for(int i=;i<=l1;i++)
if(dat1[i]){dat1[i]--;break;}
else dat1[i]=B-;
if(!dat1[l1]) l1--; printf("%lld",(solve(dat2,l2)-solve(dat1,l1)+MOD)%MOD);
return ;
}
[BZOJ 3326] 数数的更多相关文章
- BZOJ 3326 [SCOI2013]数数 (数位DP)
洛谷传送门 题目: Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制$B$ 确定一个数数的区间$[L, R]$ 对于$[L, R] $间的每一个数, ...
- BZOJ 3326: [Scoi2013]数数
数位DP,然而式子真的复杂 #include<cstdio> #include<algorithm> #include<cstring> using namespa ...
- 【BZOJ 3326】[Scoi2013]数数
题目描述 Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串, ...
- 【BZOJ】【3530】【SDOI2014】数数
AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************* ...
- BZOJ 3530: [Sdoi2014]数数 [AC自动机 数位DP]
3530: [Sdoi2014]数数 题意:\(\le N\)的不含模式串的数字有多少个,\(n=|N| \le 1200\) 考虑数位DP 对于长度\(\le n\)的,普通套路DP\(g[i][j ...
- bzoj [Sdoi2014]数数 AC自动机上dp
[Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1264 Solved: 636[Submit][Status][Discu ...
- bzoj 3530: [Sdoi2014]数数 数位dp
题目 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. ...
- 【BZOJ3530】数数(AC自动机,动态规划)
[BZOJ3530]数数(AC自动机,动态规划) 题面 BZOJ 题解 很套路的\(AC\)自动机+\(DP\) 首先,如果长度小于\(N\) 就不存在任何限制 直接大力\(DP\) 然后强制限制不能 ...
- BZOJ3530: [Sdoi2014]数数
3530: [Sdoi2014]数数 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 322 Solved: 188[Submit][Status] ...
随机推荐
- MySQL增删改查之查询
(7)范围查询select * from car where price>40 and price<60 --查询价格在40-60之间的select * from car where ...
- mac系统用docker安装oracle数据库
oracle没有mac可用的版本,最好的办法是通过docker安装 一.下载docker 1.通过brew下载 brew cask install docker 2.手动下载(需要vpn) https ...
- canvas利用formdata上传到服务器
1.首先绘制canvas图片 <canvas id="myCanvas" width="100" height="100" style ...
- hdfs文件上传机制与namenode元数据管理机制
1.hdfs文件上传机制 文件上传过程: 1.客户端想NameNode申请上传文件, 2.NameNode返回此次上传的分配DataNode情况给客户端 3.客户端开始依向dataName上传对应 ...
- MFC不同工程(解决方案)之间对话框资源的复制与重用方法(转)
原文转自 https://blog.csdn.net/lihui126/article/details/45556687
- sicily 1012. Stacking Cylinders & 1206. Stacking Cylinders
Time Limit: 1sec Memory Limit:32MB Description Cylinders (e.g. oil drums) (of radius 1 foot) are ...
- 2015多校第6场 HDU 5361 并查集,最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:有n个点1-n, 每个点到相邻点的距离是1,然后每个点可以通过花费c[i]的钱从i点走到距 ...
- 辨别苹果数据线真伪 苹果计算器 Dashboard 知识
辨别苹果数据线真伪 苹果计算器 Dashboard 知识 苹果数据线真伪的最简单的辨别: 线质柔软 用数据线连接适配器(苹果自带的适配器)充电 连接手机 如果该手机数据线是假的, 在手机上会提示”该 ...
- UNIX shell 学习笔记 一 : 几个shell的规则语法对比
1. 查看系统有哪些可用的shell cat /etc/shell 2. 每种shell都有一个特殊内置变量来存上一条命令的退出状态,例: C/TC shell $status % cp fx fy ...
- Mysql安装发生「Access denied for user ‘root’@’localhost’ (using password: NO)」错误
参考:http://www.aipacommander.com/entry/2014/05/26/152247 mysql_secure_installation 依赖重置密码