P2370 yyy2015c01的U盘

题目背景

在2020年的某一天,我们的yyy2015c01买了个高端U盘。

题目描述

你找yyy2015c01借到了这个高端的U盘,拷贝一些重要资料,但是你发现这个U盘有一些问题:

1、这个U盘的传输接口很小,只能传输大小不超过L的文件

2、这个U盘容量很小,一共只能装不超过S的文件

但是你要备份的资料却有很多,你只能备份其中的一部分。

为了选择要备份哪些文件,你给所有文件设置了一个价值Vi,你希望备份的文件总价值不小于 p

但是很快你发现这是不可能的,因为yyy2015c01的传输接口太小了,你只有花钱买一个更大的接口(更大的接口意味着可以传输更大的文件,但是购买它会花费更多的钱)

注意:你的文件不能被分割(你只能把一个文件整个的传输进去,并储存在U盘中),

你放在U盘中文件的总大小不能超过U盘容量

现在问题来了:你想知道,在满足U盘中文件价值之和 不小于 p时,最小需要多大的接口

输入输出格式

输入格式:

第1行,三个正整数 n, p, S 分别表示 文件总数, 希望最小价值p,硬盘大小

接下来n行

每行两个正整数 Wi, Vi 表示 第i个文件的大小,和价值

输出格式:

一共1行,输出一个正整数表示最小需要的接口大小

如果无解输出 “No Solution!” 不含引号

输入输出样例

输入样例#1:

3 3 5
2 2
1 2
3 2
输出样例#1:

2 (买一个大小为2接口,把物品1、2放进U盘)
输入样例#2:

2 3 505
1 2
500 1
输出样例#2:

500(买一个大小为500的接口)
输入样例#3:

3 3 2
2 2
1 2
3 2
输出样例#3:

No Solution!(本来可以买大小为2的接口,可是U盘容量放不下足够的文件)
输入样例#4:

4 5 6
5 1
5 2
5 3
1 1
输出样例#4:

No Solution!

说明

数据范围:

1 ≤ n, Wi, S ≤ 1 000

1 ≤ Vi ≤ 1 000 000

1 ≤ p ≤ 1 000 000 000

数据较小,请勿乱搞。

如果数据出现疏漏,请联系出题人@a710128

向本题主人公yyy2015c01同学致敬!

挺有意思的一道题,用二分+背包,二分枚举最小的端口,dp验证价值能否大于最小价值。

 #include<cstdio>
#include<cstring>
#include<algorithm> using namespace std;
const int MAXN = ;
int f[MAXN],v[MAXN],w[MAXN]; //f[i]大小为i时价值最大,v大小,w价值
int n,m,s; //文件个数,最小价值,U盘容量 bool dp(int x)
{
memset(f,,sizeof(f));
for (int i=; i<=n; ++i)
{
if (v[i]>x) continue ;
for (int j=s; j>=v[i]; --j)
f[j] = max(f[j],f[j-v[i]]+w[i]);
}
if (f[s]<m) return false ;
return true ;
}
int main()
{
scanf("%d%d%d",&n,&m,&s);
for (int i=; i<=n; ++i)
{
scanf("%d%d",&v[i],&w[i]);
}
int l = , r = s, ans = -;
while (l<=r)
{
int mid = (l+r)>>;
if (dp(mid))
{
ans = mid;
r = mid-; //找最小
}
else l = mid+;
}
if (ans==-) printf("No Solution!");
else printf("%d",ans);
return ;
}

最新文章

  1. XHPROF相关内容
  2. C Primer Plus_第10章_数组和指针_编程练习
  3. 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录
  4. JS回到顶部代码小记
  5. sencha touch xtype
  6. bzoj3405:[Usaco2009 Open]Grazing2 移动牛棚
  7. 让浏览器支持 jquery ajax load 前进、后退 功能
  8. AJAX及其跨域的主要解决方法
  9. 【openstack N版】——云主机调整大小\冷迁移
  10. java基本类型与Hadoop常见基本类型的对照
  11. 编写带对话框界面的OCX
  12. Bootstrap模态框垂直高度居中问题
  13. SpringBoot使用SOFA-Lookout监控
  14. 2018-4-25 html基础知识
  15. redis 数据类型为string命令整理以及示例
  16. 如何用js替换文本里的换行符 \n?
  17. 【洛谷4719】 动态dp(树链剖分,dp,矩阵乘法)
  18. spring boot实战读书笔记1
  19. Generator [ˈdʒenəreɪtə(r)] 函数结构
  20. [Vijos1512] SuperBrother打鼹鼠 (二维树状数组)

热门文章

  1. 如何查询mysql中date类型的时间范围记录?
  2. java中将数组、对象、Map、List转换成JSON数据
  3. Vue--父组件传数据给子组件,子组件生命周期过程拿到数据的情况
  4. 最小堆的维护,POJ(2051)
  5. IDEA的常用操作(快捷键)
  6. mysql数值函数
  7. 第20章 USART—串口通讯—零死角玩转STM32-F429系列
  8. BIO与NIO
  9. Java Web入门经典扫描版
  10. 插入数据返回自增id及插入更新二合一