摘要:
思路:搜索的时候是从高位到低位,所以一旦遇到非0数字,也就确定了数的长度,这样就知道回文串的中心点。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define ll long long 8 using namespace std; 9 ll dp[20][20][2];10 int bit[20],num[20];11 ll dfs(int pos,int m,int s,bool f)12 {13 if(!pos) return 1;14 if(!f&&dp[pos][m] 阅读全文
posted @ 2013-09-13 21:25
_随心所欲_
阅读(470)
评论(0)
推荐(0)
摘要:
思路:典型的数位DP!!!dp[i][j][k]:第i位,对mod取余为j,数字和对mod取余为k。注意:由于32位数字和小于95,所以当k>=95时,结果肯定为0.这样数组就可以开小点,不会超内存!!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 int dp[11][95][95],bit[11],k; 9 int dfs(int pos,int m,int s,bool f)10 {11 if(pos==-1) return !m& 阅读全文
posted @ 2013-09-13 20:35
_随心所欲_
阅读(261)
评论(0)
推荐(0)
摘要:
思路:dp[i][j]:表示第i位数,j表示是否有0.代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll long long 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 int bit[22];13 ll dp[22][2],p[22];14 ll dfs(int pos,int m,bool f)15 {16 if(pos==-1) return !m;... 阅读全文
posted @ 2013-09-13 20:02
_随心所欲_
阅读(501)
评论(0)
推荐(0)
摘要:
思路:dp[i][j]:表示第i位在B进制下数字和。用二分找第k个数!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 using namespace std;10 int dp[45][310],b,m,bit[45];11 int dfs(int pos,int mm,bool f)12 {13 if(pos==-1) return mm==m;14 if(!f&&dp[pos][mm]!=-1) return d 阅读全文
posted @ 2013-09-13 13:57
_随心所欲_
阅读(294)
评论(0)
推荐(0)

浙公网安备 33010602011771号