大多数人的写法是进行位压缩,不过那样的话需要2^18*100 的空间,效率比较低,重复状态数较多,处理起来也不方便,这一题是给出了512M的空间。但是如果空间再小一倍,前者的方法就无能为力了。
发现有一种对于数位dp来说比较好的状态压缩方式,直接根据数码x出现的次数进行状态压缩。比如说333444,如果用前者的方法压缩就需要2^6=64的空间,而直接按照出现次数压缩就只需要3*3的空间,对于极限数据,利用均值不等式,也差不多只需(ceil(18/10+1)^10)=59049的空间,提高了空间的利用率(原来...
分类:
其他好文 时间:
2014-07-10 19:35:18
阅读次数:
213
Balanced Number
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 1871 Accepted Submission(s): 836
Problem Description
A balanced...
分类:
其他好文 时间:
2014-07-09 11:54:01
阅读次数:
187
http://acm.hdu.edu.cn/showproblem.php?pid=4722
大致题意:若一个整数的各位数字之和是10的倍数,称这个数为"good number"。给出区间[A,B],求出该区间内"good number"的数的个数。
第一道数位dp,折腾了半天才明白怎么回事。
设dp[site][mod]表示到第site位(由高位向低位)前面各位数字之和对1...
分类:
其他好文 时间:
2014-07-08 20:46:41
阅读次数:
223
http://acm.hdu.edu.cn/showproblem.php?pid=3652
大致题意:"B-number"即一个整数含有子串"13"且被13整除。求1-n之间这样的数的个数。
思路:有两个限制条件:含有子串“13”和能被13整除。那么设dp[site][mod][flag],表示到第site位对13取余为mod且标记为flag的数的个数。flag表示是否含有子...
分类:
其他好文 时间:
2014-07-08 13:43:12
阅读次数:
173
题意:求1-n里有多少人包含”49“的数字
思路:数位DP,分三种情况:到第i位没有49的情况,到第i位没有49且最高位是9的情况,到第i位有49的情况,将三种情况都考虑进去就是了
#include
#include
#include
#include
using namespace std;
long long dp[30][3], n;
int arr[30];
void in...
分类:
其他好文 时间:
2014-07-04 08:48:00
阅读次数:
220
规定sum[i] 为i里面含1的个数 ,求从1-N sum[i]的乘积。数为64位内的,也就是sum[i] 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using ...
分类:
其他好文 时间:
2014-07-03 21:51:43
阅读次数:
209
数位DP,还不怎么会……其中calc函数的计算分为三部分:第一部分:统计最高位为0的情况,或者说不足最高位位数的数的个数第二部分:统计最高位为1到a[len]-1的情况,直接调用数组即可第三部分:统计与x前(len-i)位相同,但剩下的不同的满足条件的数这里用到了一个技巧,就是虚开实用,就像虚数的起...
今天居然没参考任何资料解决了这道数位DP,事先只是搞一道数论题练练;思路:求SUM[1]-SUM[N]的二进制的乘积mod1000000007; N#include#include#includeusing namespace std;#define N 10000007typedef long.....
分类:
其他好文 时间:
2014-06-26 15:09:30
阅读次数:
221
题目链接:uva 10712 - Count the Numbers
题目大意:给出n,a,b;问说在a到b之间有多少个n。
解题思路:数位dp,dp[i][j][x][y]表示第i位为j的时候,x是否前面是相等的,y是否已经出现过n。对于n=0的情况要特殊处理前导0,写的非常乱,搓死。
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-06-24 22:22:07
阅读次数:
391
2013年南京邀请赛的铜牌题。。。做的很是伤心,另外有两个不太好想到的地方。。。。a 可以等于零,另外a到b的累加和比较大,大约在2^70左右。
打表查规律比较神奇,上图不说话。
打表的代码
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pra...
分类:
其他好文 时间:
2014-06-22 21:12:01
阅读次数:
249