HDU 4669 Mutiples on a circle 数位DP】的更多相关文章

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4669 考察对取模的的理解深不深刻啊,当然还有状态的设计····设d[i][j]表示以第i个数结尾,余数为j的取法数,那么在第i个数后加一个数 那么有递推式int yu =(  j *  log10( a[i+1] ) + a[i+1] )%k, d[i+1][yu] += d[i][j] .考虑到这是一个环这样多生成了一个余数,这个余数应该减去,还有++d[i+1][a[i+1]%k]. 贴代码:…
题目链接 这是最早看懂题意的一题,状态转移,挺好想..但是比赛时候,就是没有想到怎么去重,而且当时有些情况,也没注意到. 先预处理的dp[0]的情况,就是以p[0]为结尾的情况.之后D就行了,例如样例此位6,去重只要把642896 去掉就行了,dp[1][642896%m] --;注意这个值的更新. 突然发现. #include <cstdio> #include <cstring> using namespace std; #define LL __int64 ][]; ]; ]…
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 题意:给出一个环,每个点是一个数字,取一个子串,使得拼接起来的数字是K的倍数. 由于K不大,暂且不考虑环的话,那么dp[i][j]表示以i结尾的,模K为j的有多少个子串. 那么sigma (dp[i][0])便是不考虑环的答案. 考虑环的话,不知道别人怎么写的,我感觉我的写法不是很复杂. 环和情况1 和n肯定是必选的,那么便是一个前缀为后缀,一个后…
Mutiples on a circle Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 171    Accepted Submission(s): 28 Problem Description Tom has a necklace with n jewels. There is a number on each jewel. Now…
题意 N个数的圆环上有多少种方案可以使得选出来的一段数是K的倍数(N<=50000, K<=200, a[i]<=1000). 思路 多校第七场1004.圆上的DP--大脑太简单处理一些细节时总是短路= =-- 我处理圆的方法是把圆环展开成2*N个数.我们设以第i个数结尾的所有段,按照 mod k 的余数分类的方案数为hash[i][r],r 表示余数.那么如果我们在段末尾加上i+1,我们就可以仅根据余数来确定这些段在添加了第i+1个数之后mod K的余数是(r*exp(10,digit…
题意:给你N个珠宝和一个K,每个珠宝上面都有数字,这个珠宝做成项链,把珠宝上的数字拼起来如果可以整除掉K,那么久说这个数字为wonderful value,问你有多少种方案可以组成WONDERFUL VALUE. 对每个数取余并记录多少位,这样的话拼数的时候好操作.详细解法贴个结题报告吧. 代码: #include <iostream> #include <stdio.h> using namespace std; ][]; ]; ]; <<]; int digit(i…
参考了官方题解给的方法: 对于处理循环,官方给了一种很巧妙的方法: #include <cstdio> #include <cstring> #include <cstdlib> #define LL long long int ; ; int N, K; int dp[MAXN][MAXMOD]; int val[MAXN]; ]; ]; void init() { ; i < ; ++i ) len[i] = ; ; i < ; ++i ) len[i]…
Balanced Number Problem Description A balanced number is a non-negative integer that can be balanced if a pivot is placed at some digit. More specifically, imagine each digit as a box with weight indicated by the digit. When a pivot is placed at some…
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003 题意: 求长度为n的序列中,每个字符(a~z)连续出现不超过3次的种数. 分析: 数位dp,设dp[i][j]表示进行到第i个字符,其中当前字符出现j次,然后每次状态转移一下就好了~ 代码: #include <cstdio> const int maxm = 2005, mod = 1e9+7; long long d…
http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Problem Description   杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众. 不吉利的数字为所有含有4或62的号码.例如: 62315 73418 88914 都属于不吉利号码.但是,61152虽然含有6和2…