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 ;
}

P2370 yyy2015c01的U盘的更多相关文章

  1. 洛谷 P2370 P2370 yyy2015c01的U盘

    https://www.luogu.org/problemnew/show/P2370 二分+背包 #include <algorithm> #include <iostream&g ...

  2. [洛谷P2370]yyy2015c01的U盘

    题目大意:有n个文件,每个文件有一个大小和价值,有一个容量为s的U盘,要装这些文件.传输文件需要接口,一个大小为k的接口能传输的最大文件的大小为k.问最少要多大的接口,才能使传输的文件价值$\ge p ...

  3. P2370 yyy2015c01的U盘(二分+背包)

    思路:先说一下题意吧.就是给你n个文件大小为v,价值为c, 但是硬盘的大小为S, 而且要存的总价值大于等于p.问每次传输k大小的文件.问k的最大值是多少? 我们以k为二分对象. 直接讲检验函数吧. 假 ...

  4. 洛谷 P2370 yyy2015c01的U盘

    题目传送门 解题思路: 先将每个文件按照占空间从小到大排序,然后跑背包,当到了某一个文件时,价值够了,那么当前文件的体积就是答案. 其实本题是可以二分答案的,但是写挂了... AC代码: #inclu ...

  5. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  6. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

  7. windows 7(32/64位)GHO安装指南(U盘引导篇)~

    上一篇我们说了怎么制作U盘启动盘,那么这一篇让我们来看看如何进行正确的U盘引导启动. 现在的个人计算机一般分为台式机和笔记本,由于各厂商的喜好不同(开玩笑的啦),所以对于主板的BIOS设置各所不同.进 ...

  8. windows 7(32/64位)GHO安装指南(U盘制作篇)~

    本篇接着上篇的介绍,为同学讲解U盘启动盘的制作.虽然本篇大白菜的官网上也有类似的教程,但是为了完整性,我将在这里为大家细细的讲解.在这里说一下,系统包和软件包的下载大家可以自行下载,很简单的,小主就不 ...

  9. U盘安装Kali 出现cd-rom无法挂载 已解决

    用U盘安装Kali Linux的过程中,出现cd-rom无法挂载的现象,百度坑比啊,醉了.下面亲测成功 出现无法挂载后,选择执行shell 第一步:df -m此时会看到挂载信息,最下面的是/dev/* ...

随机推荐

  1. 最近项目需要用到AdminLTE,所以整理一份中文版的小教程

    先介绍一下AdminLTE的官方网站:AdminLTE官方网站 和GitHub:AdminLTE的github,可以在上面自行下载. AdminLTE 是一个完全响应管理模板,主要依赖于 Bootst ...

  2. April 8 2017 Week 14 Saturday

    Life is the art of drawing without an eraser. 人生如画,落笔无悔. Yesterday I watched a film from Japan, Afte ...

  3. 【转载】#344 - Hidden Base Class Member Is Invoked Based on Declared Type of Object

    When you use the new modifier to hide a base class method, it will still be called by objects whose ...

  4. PHP @ at 记号的作用

    看PHP的代码,总有些行前边有@符号,一直不知道是什么意思. 例如dede5.7     @$ni=imagecreatetruecolor($ftoW,$ftoH); 今天用到了,就记一下吧.其实它 ...

  5. 引用类型(三):Function类型

    一. Function类型函数实际上是对象.每个函数都是Function类型都实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象都指针.1.函数通常是使 ...

  6. 问题 C: B 统计程序设计基础课程学生的平均成绩

    题目描述 程序设计基础课程的学生成绩出来了,老师需要统计出学生个数和平均成绩.学生信息的输入如下: 学号(num)                     学生姓名(name)            ...

  7. linq 和 lmabda 表达式 的用法 和优劣 转自 农码一生

    https://www.cnblogs.com/zhaopei/p/5746414.html

  8. 缓冲区溢出实战教程系列(三):利用OllyDbg了解程序运行机制

    想要进行缓冲区溢出的分析与利用,当然就要懂得程序运行的机制.今天我们就用动态分析神器ollydbg来了解一下在windows下程序是如何运行的. 戳这里看之前发布的文章: 缓冲区溢出实战教程系列(一) ...

  9. 旧文备份:windows下编译和使用IT++

    1.下载IT++最新版:<a href="http://sourceforge.net/projects/itpp/">http://sourceforge.net/p ...

  10. Linq to Entity 时间差作为筛选条件产生的问题

    前言 在使用 Linq to Entity 的時候,會把之前 Linq to SQL 的想法就帶進去,寫好之後編譯也都不會出錯,但是實際上在跑的時候就會出現錯誤訊息了,這點真的要注意了.這次我遇到問題 ...