凝视 eyesight
来源:互联网 发布:mac蓝光播放器注册码 编辑:程序博客网 时间:2024/04/29 08:17
【问题描述】
背包是个好东西,希望我也有。
给你一个二维的背包,它的体积是。现在你有一些大小为和的物品,每个物品有自己的价值。你希望往背包里面装一些物品,使得它们的价值和最大,问最大的价值和是多少。
【输入格式】
第一行一个整数代表该测试点的数据组数。
对于每组数据,第一行有四个整数,其中分别代表大小为和大小为的物品个数。
接下来一行有个数代表每个物品的价值。
接下来一行有个数代表每个物品的价值。
【输出格式】
对于每组询问,输出能够达到的价值最大值。
【样例输入】
1
2 3 2 2
1 2
1 2
【样例输出】
4
【样例解释】
庙里有座山。
【数据规模与约定】
注意,不要想麻烦了,这是一道贪心题,并不是dp。
枚举放多少个1*3的,剩下的尽量放满1*2的。
注意一种情况,像2*5,这样只能放2个1*3的。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define LL long long#define N 10009using namespace std;int n,m,n1,n2,T;int z1[N],z2[N];LL s1[N],s2[N],ans,rest;bool cmp(int a,int b) {return a>b;} int main(){ freopen("eyesight.in","r",stdin); freopen("eyesight.out","w",stdout); scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&n,&m,&n1,&n2); for(int i=1;i<=n1;i++) scanf("%d",&z1[i]); for(int i=1;i<=n2;i++) scanf("%d",&z2[i]); sort(z1+1,z1+n1+1,cmp);sort(z2+1,z2+n2+1,cmp); for(int i=1;i<=n1;i++) s1[i]=s1[i-1]+z1[i]; for(int i=1;i<=n2;i++) s2[i]=s2[i-1]+z2[i]; ans=0;int v=n*m; if(v<2) {printf("0\n");continue;} rest=0; if(n==2&&m%3==2) rest=4;//特判!例如2*5 for(int i=0;i<=(v-rest)/3;i++) { int j=(v-(i*3))/2; ans=max(ans,s1[min(j,n1)]+s2[min(n2,i)]); } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- 凝视 eyesight
- eyesight
- eyesight
- 凝视
- 凝视
- eyesight goodness
- 这次凝视
- Cardboard 凝视
- how to improve your eyesight
- 未曾遗忘的凝视
- 凝视与守望
- Hololens入门之凝视
- Hololens入门之凝视
- Hololens的凝视交互
- 暴风魔镜VR_凝视
- 暴风魔镜中的凝视
- Hololens入门之凝视
- Hololens入门之凝视
- two
- Java对象创建与垃圾收集器实现
- FTPrep, 97 Interleaving String
- death
- eyesight
- 凝视 eyesight
- 大咖 | 被开除的乔布斯重回苹果时的内部讲话,极具启发性 (内含完整版视频)
- 从如何跳橡皮筋,到如何优雅地kiss,老铁们到底在谷歌什么?
- 华为机考笔试题-进制转换
- VS2017中对BOOST的编译,及demo测试
- 凝视
- 循环矩乘——Luogu3746/BZOJ4870 [SHOI2017]组合数问题
- 【第三节】 你好,窗口
- spring boot实战之shiro session过期时间