vijos1071【动态规划】
2012-11-03 15:07
204 查看
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define forn(i,n) for(int i=0;i<(n);i++) #define for1(i,n) for(int i=1;i<=(n);i++) int n , m; int f[100010] , c[101]; bool vis[101]; void ZeroOnePack(int cost) { for(int i=m;i>=cost;i--) if(f[i-cost]) f[i] += f[i-cost]; } void read() { scanf("%d%d",&m,&n); for1(i,n) scanf("%d",&c[i]); } void dp() { f[0] = 1; int mm = m; for1(i,n) ZeroOnePack(c[i]); if(!f[m]) { puts("0"); return; } if(f[m] > 1) { puts("-1"); return; } int flag = 0; for1(i,n) { if(m>=c[i] && f[m - c[i]]) { m -= c[i]; vis[i] = 1; if(m == 0) break; } } for1(i,n) { if(!vis[i]) { if(flag) printf(" "); else flag = 1; printf("%d",i); } } printf("\n"); } int main() { read(); dp(); return 0; }
相关文章推荐
- Vijos P1431 守望者的逃离 (动态规划+贪心)(未解决)
- Vijos 1921 严厉的班长 【状态压缩动态规划】
- 【动态规划】Vijos P1313 金明的预算方案(NOIP2006提高组第二题)
- 【动态规划】Vijos P1616 迎接仪式
- Vijos - 1488 路灯的改建计划 动态规划 重庆一中高2018级竞赛班第九次测试 2016.9.10 Problem 3
- 【动态规划】 Vijos P1057 盖房子
- Vijos P1104 采药 动态规划
- Vijos 1921 严厉的班长 【状态压缩动态规划】
- VIJOS 1335 车队过桥问题 动态规划
- CJOJ 1071 【Uva】硬币问题(动态规划)
- vijos P2026 几乎奇偶等和数 [数位dp]【动态规划】
- Vijos 1069 新年趣事之红包(动态规划最短路)
- 新年趣事之打牌----VIJOS_1071----01背包加强版
- vijos1059【动态规划】
- Vijos P1037 搭建双塔(动态规划)
- 【动态规划】【归并】Vijos P1412 多人背包
- Vijos P1121 马拦过河卒(动态规划)
- |Vijos|NOIP2002|动态规划|P1121 马拦过河卒
- 1090. [Vijos 1071] 新年趣事之打牌
- VIJOS P1057盖房子 (动态规划)