ACM/ICPC_数位dp
just_sort
Acdream.
展开
-
SWUST OJ 1804 二进制
Description 对于一串自然数序列0,1,2,3,4,5,6......,n。 冰神给了你一个任务,就是求,0到n中,所有自然数的二进制码中的‘1’的个数 举个例子:当n=5的时候 十进制数 二进制数 ------------------------- 0 0 1 1 2原创 2016-04-08 10:48:06 · 986 阅读 · 0 评论 -
2016 ACM/ICPC Asia Regional Shenyang Online HDU 5898 odd-even number
odd-even number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 343 Accepted Submission(s): 186 Problem Description For a number,if原创 2016-09-19 20:59:28 · 842 阅读 · 0 评论 -
Educational Codeforces Round 8 D. Magic Numbers 数位DP
题目链接:http://codeforces.com/contest/628/problem/D 题意:现在定义d-magic数字,就是一个没有前导0的数,d恰好仅出现在这个数的偶数位置。然后现在给你m,d,a,b。问你在[a,b]内,是m的倍数,且是d-magic的数字有多少个答案需要 mod 1e9+7解法: 裸数位DP,dp[i][mod]表示从高到低i位,且模m余mod的magic nu原创 2017-03-28 17:02:33 · 425 阅读 · 0 评论 -
hihocoder #1301 : 筑地市场 二分+数位dp
题目链接:这里 题意: Description筑地市场是位于日本东京都中央区筑地的公营批发市场,为东京都政府设置的中央批发市场之一,亦是日本最大的鱼市场。其规模之大与知名度之广,不只是东京,更是日本首屈一指的批发市场。全球百分之五十的金枪鱼,从世界的各地被运往这里,在每天的清晨,进行着繁忙的拍卖,它们是寿司中最不可或缺的食材,如何能够买到上等的金枪鱼,成为了每家寿司店都关注的大事。当地的鱼贩,会原创 2017-03-23 11:11:31 · 431 阅读 · 0 评论 -
SPOJ 10606 Balanced Numbers 数位DP
题目链接:https://vjudge.net/problem/SPOJ-BALNUM题意:个数被称为是平衡的数当且仅当对于所有出现过的数位,偶数出现奇数次,奇数出现偶数次。给定A,B,请统计出[A,B]内所有平衡的数的个数。解法:注意,这里的偶数是指出现过的数,并且不能计算前导零。对于每一个数有三种状态:0:这个数还木有出现过。1:这个数出现过奇数次。2:这个数出现过偶数次。 所以直接用一个三进制原创 2017-05-10 18:53:06 · 404 阅读 · 0 评论 -
BZOJ 3329: Xorequ 数位DP+矩阵快速幂
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3329 解法:x xor 2x=3x(与x xor 3x=2x等价)求满足等式且小于n的x的个数,与满足等式小于2n的数的个数。因为异或是不 进位的二进制加法,那么因为结果正好和加法相同,那么说明x在二进制上没有相邻的1。那么简单的数位DP就可以求出 满足这个的答案原创 2017-05-11 10:16:37 · 726 阅读 · 0 评论 -
BZOJ 3679 数位DP,离散化
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3679 解法: 比较裸的数位DP,dp[i][j][k]表示前i位,当前位数字为j,乘积为k(k保存的是离散化之后的值),然后按照数位DP的做法去写就可以了。 ///BZOJ 3679 ///数位DP,离散化 #include using namespace st原创 2017-05-10 20:20:07 · 408 阅读 · 0 评论 -
BZOJ 1833: [ZJOI2010]count 数字计数 数位DP,处理前导0
Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 Input 输入文件中仅包含一行两个整数a、b,含义如上所述。 Output 输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。 Sample Input 1 99Sample Output 9 20 20 20 20 20 20原创 2017-05-10 16:09:28 · 450 阅读 · 0 评论 -
弱校联萌 BNU I. Increasing or Decreasing
【题意】求L,R区间里面严格递增或者严格递减的数的个数。 【解题方法】数位DP。正解给了两种方法,我直接用数位DP水过去了。 【代码君】 // //Created by just_sort 2016/10/6 //Copyright (c) 2016 just_sort.All Rights Reserved // #include #include #include #include原创 2016-10-06 16:36:53 · 670 阅读 · 0 评论 -
SPOJ BALNUM (数位DP)
【题意】求出现的数字,所有偶数出现奇数次,所有奇数出现偶数次的个数。 【解题方法】用一个三进制表示每个数字出现的状态,1表示出现过奇数次,0表示从未出现过,1表示出现过偶数次。dp[l][s]长度为i,s代表当前状态。接下来就是数位DP经典套路了。 【AC 代码】 #include #include #include #include using namespace std; typ原创 2016-08-13 20:11:10 · 751 阅读 · 0 评论 -
HDU.2089 & HDU.3555
【HDU.2089 题意】 不吉利的数字为所有含有4或62的号码。例如: 62315 73418 88914 都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。 你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上牌照了。 【解题方法】数位DP。dp[i][j]代表当前i位并且首位为j的最大方案! 【AC原创 2016-07-17 14:32:59 · 511 阅读 · 0 评论 -
数位DP学习 数位DP板子理解 CF55D解题报告
【题意】先理解一下数位DP的模板,下面解释的非常清楚了。 // pos = 当前处理的位置(一般从高位到低位) // pre = 上一个位的数字(更高的那一位) // status = 要达到的状态,如果为1则可以认为找到了答案,到时候用来返回, // 给计数器+1。 // limit = 是否受限,也即当前处理这位能否随便取值。如56原创 2016-08-10 11:28:16 · 1096 阅读 · 0 评论 -
HDU 4352 XHXJ's LIS(数位DP)
【题意】 问区间[L, R]里面满足 LIS == k的数字个数。 【解题方法】 LIS运用动态规划可以在nlogn的时间复杂度解决,此略。 因为最多只有0-9十个数字,因此可以预处理。 .sta为LIS 的状态,siz[sta]中保存LIS 的长度(即二进制中1的个数),nex[sta][i]为在sta中插入 数字i之后的 状态。 dp[l][sta]原创 2016-08-10 15:23:17 · 508 阅读 · 0 评论 -
HDU 2089 不要62 && HDU 3555 Bomb (数位DP)
【题意】【L,R】中不含4或62的数字的个数。 【解题方法】数位DP,板子题。 #include #include #include #include using namespace std; int digit[10],dp[10][2],vis[10][2]; int dfs(int l,int six,int jud){ if(l==0) return 1; if原创 2016-08-10 15:50:32 · 298 阅读 · 0 评论 -
Codeforences #287 div2 D. The Maths Lecture
【题意】N 【解题方法】裸数位DP了。dp[i][mod][ok]表示从第n位到第i位,模数为mod,是否含有后缀大于0并且mod=0的数字数。添加一个数的时候是(d*10^i+mod)%k,这里需要注意。 【AC 代码】 #include using namespace std; const int maxn=1010; int dp[maxn][100][2];//从第n位原创 2016-08-10 20:47:46 · 323 阅读 · 0 评论 -
HDU 3652 裸数位DP
【题意】【1,n】里面还有数字13并且是13的倍数的数字的个数。 【解题方法】数位DP裸题。 dp[l][mod][iso][has] :l为数字长度,(mod为当前数字对13的取余值,iso为是否存在, has为最后一位是否为数字1。 int dfs(int l,int mod,bool iso,bool has,bool jud) :jud判断是否为边界值。 【AC 代码】原创 2016-08-12 21:32:02 · 672 阅读 · 0 评论 -
数位DP专题小结--by sgx 数位DP专题小结--by sgx
数位DP,一句话概括,就是在一个给定区间内求出满足某中奇葩条件的数字个数,这真是奇葩题目,但是总体写起来又有一定规律性。 主要可以分为以下几个步骤: 确定主体框架,确定一个大方向,想想该如何设计状态; 下面基本就是模板,直接DFS就行了,一位一位处理,这也是他叫按位DP的原因。 数位DP代码一般都很短,不过效率挺好,解决一些竞赛中出现的问题非常有用 。 如果看了这部分 ,你感觉还转载 2017-08-14 19:57:51 · 541 阅读 · 0 评论