P2925 [USACO08DEC]干草出售Hay For Sale
2017-08-09 20:19
399 查看
QAQ
此题如果使用普通的01背包会超时,因此添加几条优化
1、由于需要从小到大遍历车的容量,假设车的容量是a,那么f[a]一定小于等于a
这说明当f[a]取a时就不用再一次对f[a]进行更新了
2、由于车的总容量为c,那么这辆车最多只能装体积为c的干草
因此如果已经可以装体积为c的干草就直接输出结果并退出
此题如果使用普通的01背包会超时,因此添加几条优化
1、由于需要从小到大遍历车的容量,假设车的容量是a,那么f[a]一定小于等于a
这说明当f[a]取a时就不用再一次对f[a]进行更新了
2、由于车的总容量为c,那么这辆车最多只能装体积为c的干草
因此如果已经可以装体积为c的干草就直接输出结果并退出
#include<iostream> using namespace std; int c,h;//c容量 h种情况 int f[50005]; int v[50005]; int main(){ cin >> c >> h; for(int i = 1;i <= h;i++) cin >> v[i]; for(int i=1;i<=h;i++){ for(int a = c;a >= v[i];a--){ if(f[a] == a) continue; //此时f[a]已经取到最大值 就不用再对f[a]进行更新 if(f[a-v[i]] +v[i]>f[a]) f[a]=f[a-v[i]]+v[i]; } if(f[c] == c){//判断是否已经能够装满c体积的干草 cout << c;//能够装满 return 0;//退出 } } cout << f[c]; return 0; }
相关文章推荐
- 洛谷 P2925 [USACO08DEC]干草出售Hay For Sale
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- AC日记——[USACO08DEC]干草出售Hay For Sale 洛谷 P2925
- 洛谷——P2925 [USACO08DEC]干草出售Hay For Sale
- 洛谷 P2925 [USACO08DEC]干草出售Hay For Sale
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- [USACO08DEC]干草出售Hay For Sale——动态规划
- bzoj 1606 [Usaco2008 Dec]Hay For Sale 购买干草(01背包)
- 【bzoj1606】[Usaco2008 Dec]Hay For Sale 购买干草 背包dp
- BZOJ 1606 [Usaco2008 Dec]Hay For Sale 购买干草 DP---背包
- BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草
- [Usaco2008 Dec]Hay For Sale 购买干草
- [bzoj1606][Usaco2008 Dec]Hay For Sale 购买干草_动态规划_背包dp
- BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草(动态规划)
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草( dp )
- 【bzoj 1606】 [Usaco2008 Dec]Hay For Sale 购买干草 01背包
- [Usaco2008 Dec]Hay For Sale 购买干草
- BZOJ 1606: [Usaco2008 Dec]Hay For Sale 购买干草