[BZOJ 3326] 数数】的更多相关文章

洛谷传送门 题目: Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制$B$ 确定一个数数的区间$[L, R]$ 对于$[L, R] $间的每一个数,把该数视为一个字符串,列出该字符串的每一个(连续的)子串对应的$B$进制数的值. 对所有列出的数求和.现在Fish 数了一遍数,但是不确定自己的结果是否正确了.由于$[L, R] $较大,他没有多余精力去验证是否正确,你能写一个程序来帮他验证吗? 非常恶心的一道数位$DP$ 首先是数位$DP$的常规…
数位DP,然而式子真的复杂 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int mod=20130427; int ans,B,N,A[100005],Suf[100005][2],Szsuf[100005][2],Sum[100005][2],a[100005]; int calc(){ int suf=0,sum=0; for (int i=1;…
Link: BZOJ 3326 传送门 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[…
题目描述 Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串,列出该字符串的每一个(连续的)子串对应的B进制数的值. 对所有列出的数求和.现在Fish 数了一遍数,但是不确定自己的结果是否正确了.由于[L, R] 较大,他没有多余精力去验证是否正确,你能写一个程序来帮他验证吗? 输入输出格式 输入格式: 输入包含三行. 第一行仅有一个数B,表示数数的进制. 第…
AC自动机/数位DP orz zyf 好题啊= =同时加深了我对AC自动机(这个应该可以叫Trie图了吧……出边补全!)和数位DP的理解……不过不能自己写出来还真是弱…… /************************************************************** Problem: 3530 User: Tunix Language: C++ Result: Accepted Time:1008 ms Memory:33956 kb **************…
3530: [Sdoi2014]数数 题意:\(\le N\)的不含模式串的数字有多少个,\(n=|N| \le 1200\) 考虑数位DP 对于长度\(\le n\)的,普通套路DP\(g[i][j]\)即可 对于长度\(=n\)的,需要考虑天际线,\(f[i][j][0/1]\)表示从高开始i位走到节点j,是否卡上界的方案数 需要注意的是前导0的处理,不能出现前导0,所以\(f[0]\)往外转移的时候不能走0 #include <iostream> #include <cstdio&…
[Sdoi2014]数数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1264  Solved: 636[Submit][Status][Discuss] Description 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数.    给定N和S,计算不大于N的幸运数个数. Input 输入的第一行包…
题目 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. 给定N和S,计算不大于N的幸运数个数. 题解 有一道scoi2013的数数比这道题丧病多了... 这道题还是比较好做的. 给定范围的时给定了n的长度,并且要求计算数的个数. 所以可以基本确定这是一道数位dp了. 然后又要求有一部分串不能出现 这是经典的在AC自动机上的dp了. 所以我们需要在拿到的…
[BZOJ3530]数数(AC自动机,动态规划) 题面 BZOJ 题解 很套路的\(AC\)自动机+\(DP\) 首先,如果长度小于\(N\) 就不存在任何限制 直接大力\(DP\) 然后强制限制不能走到带有标记的点上面 如果长度恰好为\(N\)的长度 那么,要考虑是否恰好卡在范围里面 于是\(DP\)状态多记一维 表示是否卡在范围里面 最后求一下和就行啦 #include<iostream> #include<cstdio> #include<cstdlib> #in…
3530: [Sdoi2014]数数 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 322  Solved: 188[Submit][Status] Description 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数.     给定N和S,计算不大于N的幸运数个数. Input 输入的第一行包含整数…