HDU 1171 Big Event in HDU(多重背包)
来源:互联网 发布:excel怎么数据透视 编辑:程序博客网 时间:2024/04/29 08:44
f[j]=max(f[j],f[j-k*v[i]]+k*v[i])。内层循环时逆序。
//// main.cpp// Richard//// Created by 邵金杰 on 16/9/10.// Copyright © 2016年 邵金杰. All rights reserved.//#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=255555;int f[maxn],v[maxn],c[maxn];int main(){ int n; while(scanf("%d",&n)&&n>0) { memset(f,0,sizeof(f)); int sum=0; for(int i=0;i<n;i++) { scanf("%d%d",&v[i],&c[i]); sum+=v[i]*c[i]; } for(int i=0;i<n;i++) { int l=c[i],k=1; while(l>k) { for(int j=sum/2;j>=k*v[i];j--) f[j]=max(f[j],f[j-k*v[i]]+k*v[i]); l-=k; k<<=1; } for(int j=sum/2;j>l*v[i];j--) f[j]=max(f[j],f[j-l*v[i]]+l*v[i]); } cout<<sum-f[sum/2]<<" "<<f[sum/2]<<endl; } return 0;}
0 0
- HDU 1171 Big Event in HDU(多重背包)
- hdu 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU (多重背包)
- hdu 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU (多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- HDU 1171 Big Event in HDU(多重背包)
- Big Event in HDU (多重背包)
- hdu 1171 Big Event in HDU(01背包&多重背包)
- HDOJ题目1171Big Event in HDU(多重背包)
- HDOJ 1171 Big Event in HDU(多重背包)
- HDU Big Event in HDU - 多重背包
- hdu 1171多重背包Big Event in HDU
- 迭代器的使用方法
- 什么是动态链接库
- 字典树(trie)模板
- 深入了解java虚拟机
- strcpy和strncpy用法和区别
- HDU 1171 Big Event in HDU(多重背包)
- 有章法的学习c++(9)复合类型(二)
- Android 定时器 三种方法
- 牛客网--case:;break; 练习题
- 算法---求二进制中1的个数
- (Android自定义View)来来来,一起再撸一个Material风格loadingView。
- iOS事项计划
- VVDocumenter-Xcode插件的操作
- session实现带随机验证码的登陆