数数 bzoj-3530 Sdoi-2014 题目大意:给你一个整数集合,求所有不超过n的正整数,是的它的十进制表示下不能再一段等于集合中的任意数. 注释:$1\le n \le 1200$,$1\le |S|\le 100$,$1\le L\le 1500$,L是总长度之和. 想法:咳咳,显然,我们... ...什么都不想,看着能开下先把AC自动机扔出来 然后,其实数位dp就可以了 具体看代码 最后,附上丑陋的代码... ... #include <iostream> #include &l…
BZOJ_1662_[Usaco2006 Nov]Round Numbers 圆环数_数位DP Description 正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序.她们甚至也不能通过仍硬币的方式. 所以她们通过"round number"竞赛的方式.第一头牛选取一个整数,小于20亿.第二头牛也这样选取一个整数.如果这两个数都是 "round numbers",那么第一头牛获胜,否则第二头牛获胜. 如果一个正整数N的二进制表示中…
BZOJ_1026_[SCOI2009]windy数_数位DP 题意:windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 学一下数位DP. f[i][j]表示i位数以j开头的windy数个数.转移有f[i+1][k]+=f[i][j](abs(j-k)>=2) 答案转成[1~R]-[1~L-1]之后按位枚举,每次枚举到当前位上的数减1. 注意: 1.枚举到两位差2以内时停止枚…
BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][j][k]表示i位数,以j开头的数中k出现的次数 预处理出来10的幂(在数位DP中经常会用到) f[i][j][k]+=f[i-1][l][k]+(j==k)*10^(i-1) 之后按位枚举,0的情况特殊处理 代码: #include <stdio.h> #include <string.h…
windy数 bzoj-1026 题目大意:求一段区间中的windy数个数. 注释:如果一个数任意相邻两位的差的绝对值都不小于2,这个数就是windy数,没有前导0.$区间边界<=2\cdot 10^9$. 想法:数位dp裸题,何为数位dp? 数位dp的意思就是我们交换一种dp的方式.通过数位进行dp.数位dp的主旨分为两点:1.对于所求答案的预处理.2.对于所求区间的边界特判.我们对于数位dp有几个显而易见但是却比较useful的性质: 如果一个数的位数小于第二个数的位数,那么后者是大于前者的…
花神的数论题 bzoj-3209 题目大意:sum(i)表示i的二进制表示中1的个数,求$\prod\limits_{i=1}^n sum(i)$ 注释:$1\le n\le 10^{15}$. 想法:喷一下题目...神tm数论题,明明是个dp. 显然,如果稍微打个表的话就可以发现,有很多数的sum是相等的,我们不想重复乘这么多次,所以我们想到将所有sum相等的数弄到一起然后快速幂.这样,就不难想到数位dp 状态:dp[i][j]表示i位,sum值是j的个数. 转移是容易的,按照数位dp的边界特…
1026: [SCOI2009]windy数 题目:传送门 题解: 其实之前年少无知的时候好像A过...表示当时并不知道什么数位DP 今天回来深造一发... 其实如果对这个算法稍有了解...看到这题的数据范围应该就YY出来了(蒟蒻博主表示很无力) 好吧讲做法: 这题的DP其实只是在于一开始的预处理:定义f[i][j]表示长度为i且最高位为j的windy数 那么转移方程再YY一发: ;i<=;i++)f[][i]=; ;i<=;i++) ;j<=;j++) ;k<=;k++) ) f…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3209 可以枚举 “1的个数是...的数有多少个” ,然后就是用组合数算在多少位里选几个1. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ,N=;//(1e7+7)%9…
题目链接:  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3494 题目大意:给定一些被禁止的BCD码.问指定范围内不含有任何这些禁止的BCD码的数的个数. 解题思路: AC自动机部分: 首先insert这些被禁止的BCD码. 然后打一下自动机前后状态的转移的表,用BCD[i][j]表示自动机状态i时,下一个数字是j的自动机的下一个状态. 一开始我考虑最先dfs的位在自动机的位置,后来发现SB了.AC自动机有一个roo…
问m-n之间的数中共有多少个0,过程稍稍麻烦了一些,半天的时间才搞定. 直接上码吧 /************************************************************************* > File Name: 11038_数位DP.cpp > Author: Chierush > Mail: qinxiaojie1@gmail.com > Created Time: 2013年06月16日 星期日 16时13分54秒 *******…