摘要: 题目描述:...分析:因为不同年份之间没有什么互相影响,所以可用完全背包求解,唯一不同的就是每年的背包容量都在变大。 另外由于物品价钱都是1000的倍数,所以可以同时除以1000,减少内存。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 #define N 100010 6 using namespace std; 7 int dp[N],w[N],v[N]; 8 int main(){ 9 int t;10 cin>& 阅读全文
posted @ 2012-10-20 22:00 silver__bullet 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目描述; 给定几种钱的面值,问用这些钱凑出n的价值有多少中方案。分析:背包问题,统计填满背包的方案数。 dp [ i ] [ j ]表示用前j种面值凑出i钱的方案数。 dp [ i ] [ j ]=sum { dp [ i - k*s [ j ] ] [ j-1 ] } 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #define N 7500 5 using namespace std; 6 typedef long long ll; 7 ll dp[N][5]; 8 i 阅读全文
posted @ 2012-10-20 21:44 silver__bullet 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目描述:...分析:因为只要剩余金额大于5肯定会支付成功,那么最优的办法肯定是要用最后的钱去买最贵的。只需要对除了最贵的物品之外的物品进行背包就可以。其中背包的容量是原来的减5 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #define N 1010 5 using namespace std; 6 int dp[N],w[N]; 7 int main(){ 8 int n,m; 9 while(cin>>n){10 if(!n)return 0;11 for 阅读全文
posted @ 2012-10-20 21:23 silver__bullet 阅读(120) 评论(0) 推荐(0) 编辑