1279: 简单的背包问题

时间限制: 1 秒  内存限制: 32 MB
提交: 361  解决: 20

题目描述

相信大家都学过背包问题了吧,那么现在我就考大家一个问题。有n个物品,每个物品有它的重量w,价值v,现在有一个容量为W的背包,问你在不超过背包容量的情况下,能装下的物品的最大价值是多少。

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的更多相关文章

  1. 河南省多校联盟二-F 线段树+矩阵

    ---恢复内容开始--- 1284: SP教数学 时间限制: 2 秒  内存限制: 128 MB提交: 24  解决: 4 题目描述 输入 输出 对于每组数据的2操作,输出一行对1e9 + 7取模的答 ...

  2. 河南省多校联盟二-C

    1281: 邪能炸弹 时间限制: 1 秒  内存限制: 128 MB提交: 222  解决: 80 题目描述 正在入侵艾泽拉斯的古尔丹偶然间得到了一颗邪能炸弹,经过研究,他发现这是一颗威力极其巨大且难 ...

  3. 山东省ACM多校联盟省赛个人训练第六场 poj 3335 D Rotating Scoreboard

    山东省ACM多校联盟省赛个人训练第六场 D Rotating Scoreboard https://vjudge.net/problem/POJ-3335 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  4. 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告

    报告内容如下 - - [导语] ------ 太晚了,时间也紧,一切尽量从简吧 PS:本文题目来自剑锋OI 所以废话也不多说,进入正题吧,代码直接跟在题目后边儿,主要分析在代码前,次要的就写在代码后面 ...

  5. (2016弱校联盟十一专场10.3) D Parentheses

    题目链接 把左括号看成A右括号看成B,推一下就行了.好久之前写的,推到最后发现是一个有规律的序列. #include <bits/stdc++.h> using namespace std ...

  6. (2016弱校联盟十一专场10.3) B.Help the Princess!

    题目链接 宽搜一下就行. #include <iostream> #include<cstdio> #include<cstring> #include<qu ...

  7. (2016弱校联盟十一专场10.3) A.Best Matched Pair

    题目链接 #include<cstdio> #include<cstring> #include<algorithm> #include<stack> ...

  8. 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 ...

  9. 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> # ...

随机推荐

  1. 使用 Task 简化异步编程

    .Net 传统异步编程概述 .NET Framework 提供以下两种执行 I/O 绑定和计算绑定异步操作的标准模式: 异步编程模型 (APM),在该模型中异步操作由一对 Begin/End 方法(如 ...

  2. Selenium-Grid2 配置RemoteWebDriver

    为什么要使用Selenium Grid ? 分布式运行大规模的Test 能够通过一个中央点,很容易的运行不同OS上的不同browser 最小化对Grid的维护时间,并能充分利用虚拟设备 Seleniu ...

  3. k8s-离线安装coreos

    1.安装准备 下载iso 前往页面https://coreos.com/os/docs/latest/booting-with-iso.html 版本:stable 1465.7.0 日期:2017. ...

  4. 有界、无界队列对ThreadPoolExcutor执行的影响

    本文转载自https://blog.csdn.net/kusedexingfu/article/details/72491864 Java提供了4钟线程池: newCachedThreadPool n ...

  5. HTTP服务器(3)

    功能完整的HTTP服务器 导语 这个一个功能完备的HTTP服务器.它可以提供一个完整的文档输,包括图像,applet,HTML文件,文本文件.它与SingleFileHttpServer非常相似,只不 ...

  6. win32api win32gui win32con 窗口句柄 发送消息 常用方法

    Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量.接口.线程以及COM机制等等. 1.通过类名和标题查找窗口句柄,并获得窗口位置和 ...

  7. Python学习笔记之函数参数传递 传值还是传引用

      在学完Python函数那一章节时,很自然的的就会想到Python中函数传参时传值呢?还是传引用?或者都不是? 在回答上面的问题之前我们先来看看下面的代码: 代码1: def foo(var): v ...

  8. Git与TortoiseGit使用方法

               下载这两个工具 Git地址:https://git-for-windows.github.io/ TortoiseGit地址:http://tortoisegit.org/ 点击 ...

  9. 20145303 实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145303 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验题目(4):实现学生成绩管理功能,并进行测试 思路: 对于实现学生成绩管理(student performanc ...

  10. 20145312 实验五《Java网络编程》

    20145312 实验五<Java网络编程> 一. 实验内容及要求 实验内容: 运行下载的TCP代码,结对进行,一人服务器,一人客户端: 利用加解密代码包,编译运行代码,一人加密,一人解密 ...