HDU 4665 Mutiples on a circle (圆环DP)】的更多相关文章

题意 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…
题目链接: 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…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4669 题意:给一串数字连乘一个环,求连续的子串中组成的新的数字能被K整除的个数. 首先容易想到用DP来解,f[i][j]表示以第 i 个数字结尾的所有前缀数中,余数为 j 的个数,那么Σ(f[i][0])就是答案. f[i][ j*10^len(num[i])+num[i] ]+=f[i][j]. 但是这个要处理环的问题,所以我们要保证每次求的f[i][j]长度不能超过n.所以我们需要在转移f[i]…
题意:给你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]…
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩dp+广搜 使用dp[x][y][key][s]来记录孙悟空的坐标(x,y).当前获取到的钥匙key和打死的蛇s.由于钥匙具有先后顺序,因此在钥匙维度中只需开辟大小为10的长度来保存当前获取的最大编号的钥匙即可.蛇没有先后顺序,其中s的二进制的第i位等于1表示打死了该蛇,否则表示没打死.然后进行广度…
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1391    Accepted Submission(s): 483 Problem Description The Game “Man Down 100 floors” is an famous and interesting ga…