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. C++常用字符串分割方法(转)

    1.用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串. 参数说明:str为要分解的字符串, ...

  2. ES7的Async/Await的简单理解

    Async/Await 的个人见解 正文: async,顾名思义,一个异步执行的功能,而 await 则是配合 async 使用的另一个关键字,也是闻字识其意,就是叫你等待啦! 二者配合食用效果更佳哦 ...

  3. linux基础命令-文件查看类命令cat/tac/more/less/tail/head

    cat 查看文本文件内容 -b :给每一行编号不包括空白行 -n:给所有行编号 [root@host01 tmp]# cat -An /root/anaconda-ks.cfg # Kickstart ...

  4. VUE的组件DEMO

    组件的基本写法可以如下: HTML: <div id="components-demo"> <button-counter self-data="thi ...

  5. Android(java)学习笔记66:Android Studio中build.gradle简介

    1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...

  6. ELF文件中section与segment的区别

    http://blog.csdn.net/joker0910/article/details/7655606 1. ELF中的section主要提供给Linker使用, 而segment提供给Load ...

  7. 【转】Android Support 包里究竟有什么

    随着 Android 5.0 Lollipop 的发布,Android 又为我们提供了更多的支持包,但是我相信大部分开发者都同我之前一样不知道这些包里究竟有些什么东西,我们应该在什么时候使用它.现在, ...

  8. 2017.9.29 web网上答题及其自动评测系统

    1. 设计计一个网上答题及其自动评测系统,首先是试题页面的设计及其解答的提交, 其次是当提交解答之后,系统自动评阅并给出结果. 分析:需要两个jsp页面:一个是提交信息的页面,另一个是获取提交信息的页 ...

  9. centos7安装python3和ipython

    CentOS7下默认系统自带python2.X的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装 ...

  10. openstack kilo python cinderclient

    ➜  ~ pythonPython 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on ...