P2370 yyy2015c01的U盘
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!” 不含引号
输入输出样例
3 3 5
2 2
1 2
3 2
2 (买一个大小为2接口,把物品1、2放进U盘)
2 3 505
1 2
500 1
500(买一个大小为500的接口)
3 3 2
2 2
1 2
3 2
No Solution!(本来可以买大小为2的接口,可是U盘容量放不下足够的文件)
4 5 6
5 1
5 2
5 3
1 1
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盘的更多相关文章
- 洛谷 P2370 P2370 yyy2015c01的U盘
https://www.luogu.org/problemnew/show/P2370 二分+背包 #include <algorithm> #include <iostream&g ...
- [洛谷P2370]yyy2015c01的U盘
题目大意:有n个文件,每个文件有一个大小和价值,有一个容量为s的U盘,要装这些文件.传输文件需要接口,一个大小为k的接口能传输的最大文件的大小为k.问最少要多大的接口,才能使传输的文件价值$\ge p ...
- P2370 yyy2015c01的U盘(二分+背包)
思路:先说一下题意吧.就是给你n个文件大小为v,价值为c, 但是硬盘的大小为S, 而且要存的总价值大于等于p.问每次传输k大小的文件.问k的最大值是多少? 我们以k为二分对象. 直接讲检验函数吧. 假 ...
- 洛谷 P2370 yyy2015c01的U盘
题目传送门 解题思路: 先将每个文件按照占空间从小到大排序,然后跑背包,当到了某一个文件时,价值够了,那么当前文件的体积就是答案. 其实本题是可以二分答案的,但是写挂了... AC代码: #inclu ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...
- windows 7(32/64位)GHO安装指南(U盘引导篇)~
上一篇我们说了怎么制作U盘启动盘,那么这一篇让我们来看看如何进行正确的U盘引导启动. 现在的个人计算机一般分为台式机和笔记本,由于各厂商的喜好不同(开玩笑的啦),所以对于主板的BIOS设置各所不同.进 ...
- windows 7(32/64位)GHO安装指南(U盘制作篇)~
本篇接着上篇的介绍,为同学讲解U盘启动盘的制作.虽然本篇大白菜的官网上也有类似的教程,但是为了完整性,我将在这里为大家细细的讲解.在这里说一下,系统包和软件包的下载大家可以自行下载,很简单的,小主就不 ...
- U盘安装Kali 出现cd-rom无法挂载 已解决
用U盘安装Kali Linux的过程中,出现cd-rom无法挂载的现象,百度坑比啊,醉了.下面亲测成功 出现无法挂载后,选择执行shell 第一步:df -m此时会看到挂载信息,最下面的是/dev/* ...
随机推荐
- OMD开源监控软件
参考 Best Monitoring Solution - OMD (Nagios + Check_MK) 官网 mathias-kettner.com OMD labs.consol.de Conf ...
- dell Nx000系列交换机
dell n2048(P) dell n3048(P) dell n4064(F) P: PoE+ F: SFP+ Model GbE 10GbE(SFP+) 40GbE(QSFP+) Layer d ...
- http:origin,referer和host区别
发起一个ajax请求时,request header里面有三个属性会涉及请求源信息.前端可能用不到这些值,但是,后台业务系统会比较关心它们,场景可能有: 处理跨域请求时,必须判断来源请求方是否合法:后 ...
- python数组列表、字典、拷贝、字符串
python中字符串方法 name = "I teased at life as if it were a foolish game" print(name.capitalize( ...
- ASP.NET Core - 各项配置
之前搭建好了各项开发环境,现在来说说ASP.NET Core的各项配置.项目结构.以及在请求管道中挂载的各式各样的中间件.今天先来探讨探讨其各项配置及其项目结构 ASP.NET Core和上一代F ...
- MVC:控制器名与被调用模型名称发生冲突的解决方案
控制器名与被调用的模型名发生了冲突: 有两种解决方案: (1)将被调用的模型类名进行修改 例如: (2)对被调用的模型进行起一个别名 以上 加油ヾ(◍°∇°◍)ノ゙
- jrtplib源码分析 第一篇 jthread的编译与分析
第一篇 jthread的编译与分析 jrtplib代码依赖库jthread,因此先从jthread开始jrtplib的学习.首先从以下链接下载jthread的源代码http://research.ed ...
- 分享个谷歌浏览器下的一款插件PostMan
用作POST GET调试非常好用 先下载谷歌浏览器 然后在应用里搜索安装即可
- P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找出范围[a,b](5 <= a < b <= 100,000 ...
- redis redis的连接
昨天2017年12月26日,我刚刚从网上下载了redis.经过一天的摸索,踩了不少坑.昨天下午,比较磕磕巴巴,今天早上 终于比较完善地完成了一次小操作. 使用cmd的重要步骤 1.输入redis-se ...