河南省多校联盟二-A
1279: 简单的背包问题
时间限制: 1 秒 内存限制: 32 MB
提交: 361 解决: 20
题目描述
T <= 100代表样例数
1 <= n <= 100 物品数
1 <= W <= 100000 背包的容量
1 <= wi <= 100000 每个物品的重量
对于每个i=2,3,…,N, w1 ≤ wi ≤ w1+3.
1 <= vi <= 100000 每个物品的价值
输入
T
n W
w1 v1
w2 v2
:
wn vn
输出
样例输入
2
4 6
2 1
3 4
4 10
3 4
4 6
2 1
3 7
4 10
3 6
样例输出
11
13
由于BC卡的我到死,A题数据描述没仔细看,后来才发现只有四种不同的重量的物品。
剩下的无非是对于从四种不同重量的物品中每样挑出若干件的排列组合,四重for循环即可,由于使得价值最大化,所以每次都将优先选出当前重量级物品中的价值最大的几件,预处理一下前缀和即可。
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){return a>b;}
int main()
{
//freopen("in.txt","r",stdin);
int dp[][];
int W,n,w,i,t,j,p,k,s;
cin>>t;
while(t--){int a=,b=,c=,d=,wi,vi;
dp[][]=dp[][]=dp[][]=dp[][]=;
cin>>n>>W;
scanf("%d%d",&w,&vi);
dp[][++a]=vi;
for(i=;i<=n;++i){
scanf("%d%d",&wi,&vi);
if(wi==w){
dp[][++a]=vi;
}
else if(wi==w+){
dp[][++b]=vi;
}
else if(wi==w+){
}
else if(wi==w+){
dp[][++d]=vi;
}
}
sort(dp[]+,dp[]++a,cmp);
sort(dp[]+,dp[]++b,cmp);
sort(dp[]+,dp[]++c,cmp);
sort(dp[]+,dp[]++d,cmp);
for(i=;i<=a;++i) dp[][i]+=dp[][i-];
for(i=;i<=b;++i) dp[][i]+=dp[][i-];
for(i=;i<=c;++i) dp[][i]+=dp[][i-];
for(i=;i<=d;++i) dp[][i]+=dp[][i-];
int ans=;
for(i=;i<=a;++i)
for(j=;j<=b;++j)
for(k=;k<=c;++k)
for(p=;p<=d;++p)
if((i+j+k+p)*w+j+*k+*p<=W)
ans=max(ans,dp[][i]+dp[][j]+dp[][k]+dp[][p]);
cout<<ans<<endl;
}
return ;
}
河南省多校联盟二-A的更多相关文章
- 河南省多校联盟二-F 线段树+矩阵
---恢复内容开始--- 1284: SP教数学 时间限制: 2 秒 内存限制: 128 MB提交: 24 解决: 4 题目描述 输入 输出 对于每组数据的2操作,输出一行对1e9 + 7取模的答 ...
- 河南省多校联盟二-C
1281: 邪能炸弹 时间限制: 1 秒 内存限制: 128 MB提交: 222 解决: 80 题目描述 正在入侵艾泽拉斯的古尔丹偶然间得到了一颗邪能炸弹,经过研究,他发现这是一颗威力极其巨大且难 ...
- 山东省ACM多校联盟省赛个人训练第六场 poj 3335 D Rotating Scoreboard
山东省ACM多校联盟省赛个人训练第六场 D Rotating Scoreboard https://vjudge.net/problem/POJ-3335 时间限制:C/C++ 1秒,其他语言2秒 空 ...
- 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告
报告内容如下 - - [导语] ------ 太晚了,时间也紧,一切尽量从简吧 PS:本文题目来自剑锋OI 所以废话也不多说,进入正题吧,代码直接跟在题目后边儿,主要分析在代码前,次要的就写在代码后面 ...
- (2016弱校联盟十一专场10.3) D Parentheses
题目链接 把左括号看成A右括号看成B,推一下就行了.好久之前写的,推到最后发现是一个有规律的序列. #include <bits/stdc++.h> using namespace std ...
- (2016弱校联盟十一专场10.3) B.Help the Princess!
题目链接 宽搜一下就行. #include <iostream> #include<cstdio> #include<cstring> #include<qu ...
- (2016弱校联盟十一专场10.3) A.Best Matched Pair
题目链接 #include<cstdio> #include<cstring> #include<algorithm> #include<stack> ...
- 2016弱校联盟十一专场10.5---As Easy As Possible(倍增)
题目链接 https://acm.bnu.edu.cn/v3/contest_show.php?cid=8506#problem/A problem description As we know, t ...
- 2016弱校联盟十一专场10.3---We don't wanna work!(STL--set的使用)
题目链接 https://acm.bnu.edu.cn/v3/contest_show.php?cid=8504#problem/C 代码如下: #include <iostream> # ...
随机推荐
- c#在线手册汇总
1. c#中文手册(脚本之家) http://shouce.jb51.net/net/
- What does Quick Sort look like in Python?
Let's talk about something funny at first. Have you ever implemented the Quick Sort algorithm all by ...
- 关于/proc/进程idpid/fd ,根据fd来查找连接
当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽 ...
- STL: fill,fill_n,generate,generate_n
fill Assigns the same new value to every element in a specified range. template<class ForwardIter ...
- docker——安装
Docker划分为CE和EE.CE即社区版(免费,支持后期三个月),EE即企业版,强调安全,付费使用. #安装依赖包 yum install -y yum-utils device-mapper-pe ...
- Delphi锁定鼠标 模拟左右键 静止一会自动隐藏鼠标
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- centos7命令3
查看监听的端口 netstat -lntp 检查端口被哪个进程占用 netstat -lnp|grep 8080 查看当前文件夹大小 du -sh 查看当前文件夹各目录大小 du -sh ./* 查看 ...
- vs git 推送远程会失败.
Gitblit使用admin创建版本库. 使用VS无法推送到远程服务器. VS 2017 Git failed with a fatal error 可能是帐号不应不上. 本地上帐号与服务器的 ...
- 2017 计蒜之道 初赛 第三场 D. 腾讯狼人杀 (点边都带权的最大密度子图)
点边都带权的最大密度子图,且会有必须选的点. 求\(\frac{\sum w_e}{k*(2n-k)}\)的最大值,其中k为子图点数 设\[h(g) = \sum w_e - g*(2nk-k^2)\ ...
- tensorflow中使用tf.variable_scope和tf.get_variable的ValueError
ValueError: Variable conv1/weights1 already exists, disallowed. Did you mean to set reuse=True in Va ...