HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
2013-07-17 21:04
429 查看
dp [ x ] [ y ] [ z ] 表示二进制y所表示的组合对应的之和mod x余数为z的最小数...
如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = 1234 ....
输入一个数列后..将dp的表做出来..然后O(1)的输出...题目要求是( T + X ) % K =0 可以转化为 T % K = ( K - ( X % K ) ) % K
Program:
如可用的数字为 1 2 3 4...那么 dp [ 7 ] [ 15 ] [ 2 ] = 1234 ....
输入一个数列后..将dp的表做出来..然后O(1)的输出...题目要求是( T + X ) % K =0 可以转化为 T % K = ( K - ( X % K ) ) % K
Program:
#include<iostream> #include<stdio.h> #include<string.h> #include<set> #include<algorithm> #include<cmath> #define oo 1000000007 #define ll long long #define pi acos(-1.0) #define MAXN 505 using namespace std; int n,a[10],dp[102][520][102],num,ans[10]; bool legal(int k) { int x=1,i; for (i=0;i<n;i++) { if (k%2) x=a[i]; k/=2; } return x; } int main() { int i,m,X,K,j,t,p; while (~scanf("%d%d",&n,&m)) { for (i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); memset(dp,-1,sizeof(dp)); for (K=1;K<100;K++) { dp[K][0][0]=0; for (i=0;i<(1<<n);i++) if (legal(i)) for (j=0;j<n;j++) if ( (i & (1<<j))) for (t=0;t<K;t++) if (dp[K][i-(1<<j)][t]!=-1) { p=dp[K][i-(1<<j)][t]*10+a[j]; if (dp[K][i][(t*10+a[j])%K]==-1 || dp[K][i][(t*10+a[j])%K]>p) dp[K][i][(t*10+a[j])%K]=p; } } while (m--) { scanf("%d%d",&X,&K); if (dp[K][(1<<n)-1][(K-(X%K))%K]==-1) printf("None\n"); else printf("%d\n",dp[K][(1<<n)-1][(K-(X%K))%K]); } } return 0; }
相关文章推荐
- HDOJ 1755 - A Number Puzzle 排列数字凑同余,状态压缩DP
- 【hash dp】hdu hdoj 1755 A Number Puzzle
- [bzoj1072][SCOI2007]排列(状态压缩DP)
- 20140930 【 DP - 状态压缩 】 2014-上海区域赛-网络预选赛 hdoj 5045 Contest
- HDOJ-3427 & ZOJ-3190 Resource Archiver AC自动机压缩状态DP..
- hdoj 5125 Little Zu Chongzhi's Triangles【状态压缩dp】
- (BestCoder Round #14) 1002 Harry And Dig Machine(状态压缩+DP;剪枝+搜索;全排列)
- HDOJ 1081 To The Max(dp)(状态压缩)未解决
- HDOJ 4628 - Pieces 状态压缩DP..枚举所有子集进行更新
- HDOJ 4529 - N骑士问题 状态压缩DP
- HDOJ 1074.Doing Homework(状态压缩DP)
- HDOJ 4057 - Rescue the Rabbit 简单的AC自动机+状态压缩DP
- HDOJ 5067Harry And Dig Machine(状态压缩DP)
- HDOJ4336Card Collector【概率dp求期望+状态压缩】
- HDU 3006 The Number of set (状态压缩dp)
- 【最短路+状态压缩DP】 HDOJ 4856 Tunnels
- HDOJ 1400 & POJ 2411 - Mondriaan's Dream 状态压缩DP
- hdoj1074 Doing Homework(好题呀,状态压缩+DP)
- hdoj 5045 (dp 状态压缩)
- hdoj 4336 card collector(状态压缩dp求数学期望)