hdu2639Bone Collector II(01背包的第k优策略)
来源:互联网 发布:中国真实gdp数据 编辑:程序博客网 时间:2024/05/16 12:09
题目链接:点这里!!!
题意:01背包的第k优策略。
题解:因为k只有30,我们设f[v][k]为当前容量为v的第k优策略。dp的时候我们一样各取前k个去更新就可以啦!!!
具体看代码。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<sstream>#include<algorithm>#include<vector>#include<bitset>#include<set>#include<queue>#include<stack>#include<map>#include<cstdlib>#include<cmath>#define LL long long#define pb push_back#define pa pair<int,int>#define clr(a,b) memset(a,b,sizeof(a))#define lson lr<<1,l,mid#define rson lr<<1|1,mid+1,r#define bug(x) printf("%d++++++++++++++++++++%d\n",x,x)#define key_value ch[ch[root][1]][0]#pragma comment(linker, "/STACK:102400000000,102400000000")const LL MOD = 1000000007;const int N = 105;const int maxn = 1e5+15;const int letter = 130;const int INF = 1e9;const double pi=acos(-1.0);const double eps=1e-10;using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int n,vs,k,c[N],w[N],f[N*10][35];int pp[35],qq[35];int main(){ int T; scanf("%d",&T); while(T--){ clr(f,0); scanf("%d%d%d",&n,&vs,&k); for(int i=0;i<n;i++) scanf("%d",w+i); for(int i=0;i<n;i++) scanf("%d",c+i); for(int i=0;i<n;i++){ for(int v=vs;v>=c[i];v--){ for(int j=1;j<=k;j++){ pp[j]=f[v][j]; qq[j]=f[v-c[i]][j]+w[i]; } int a=1,b=1,c=1; while(c<=k&&(a<=k||b<=k)){ if(a<=k&&b<=k){ if(pp[a]>qq[b]) f[v][c]=pp[a++]; else f[v][c]=qq[b++]; } else if(a<=k) f[v][c]=pp[a++]; else if(b<=k) f[v][c]=qq[b++]; if(f[v][c]!=f[v][c-1]) c++; } } } printf("%d\n",f[vs][k]); } return 0;}/*1005 10 21 1 3 3 45 5 2 1 7*/
0 0
- hdu2639Bone Collector II(01背包的第k优策略)
- hdu2639Bone Collector II (01背包,求第k优解)
- hdu2639Bone Collector II(第K大背包)
- hdu2639bone collector II【第K优解】
- hdu 01背包 2639Bone Collector II 01背包的第K优解
- hdu2639Bone Collector II
- hdu2639Bone Collector II
- hdu 2639 Bone Collector II(第K优背包)
- Hdu 2639 Bone Collector II (01背包第k优解)
- hdu2639 Bone Collector II 01背包第K优解
- hdu 2639Bone Collector II 01背包第k大问题
- HDU2639 - Bone Collector II(第k大01背包)
- hdu 2639 Bone Collector II 01背包第K优解
- HDU 2639 Bone Collector II 01背包第K优解
- HDU - 2639 Bone Collector II(第K大01背包)
- hdu 2639 Bone Collector II 01背包 第k优解
- Bone Collector II (HDU_2639) 01背包 + 第K优解
- hdu 2639 Bone Collector II 第k大01背包
- JAVA内存点滴
- 模拟按键给窗口发消息
- c++多个文件中如何共用一个全局变量
- 并查集
- hdu4728 PowMod(2016多校第一场1006)
- hdu2639Bone Collector II(01背包的第k优策略)
- a++,++a
- 项目运行时,直接在main.m停住
- CSS的单位及css3的calc()及line-height百分比
- opencv学习(3)鼠标的操作和copyTo等函数的学习
- VS2013 Progress Control控件实现进度条
- MFC+opencv打开文件夹选择单张或多张图片
- 运行fast-rcnn-windows遇到的问题
- Linux/Unix select函数 及select/poll与epoll的对比