题目传送门(内部题105)


输入格式

  每组数据第一行一个正整数$n$,表示硬盘块数,接下来$n$行,每行两个正整数,第一个正整数为硬盘格式化前的容量,第二个正整数为格式化之后的容量。


输出格式

  对每组数据输出一行一个正整数表示答案。


样例

样例输入1:

4
6 6
1 7
3 5
3 5

样例输出1:

1

样例输入2:

4
2 2
3 3
5 1
5 10

样例输出2:

5


数据范围与提示

样例解释:

  第一组数据中,先将第二块硬盘的数据存放到容量为$1$的额外硬盘上再进行格式化,其容量变为$7$,之后将第一块硬盘的数据保存到第二块硬盘上,格式化第一块硬盘,最后将剩下两块硬盘的数据保存到第一块硬盘上再进行格式化。
  第二组数据中,至少需要大小为$5$的额外空间才能格式化最后一块硬盘,而格式化最后一块硬盘后其它硬盘的内容都可以被保存然后格式化,故答案为$5$。

数据范围:

  对于前$30\%$的数据,$n\leqslant 10$。
  对于另外$20\%$的数据,格式化后硬盘的容量均大于格式化前的硬盘容量。
  对于前$85\%$的数据,有$n\leqslant 1,000$。
  对于$100\%$的数据,$1\leqslant n\leqslant 1,000,000$,输入中所有的数都是不超过$1,000,000,000=1,000^3$的正整数。


题解

考虑贪心。

为了保证代价最小,肯定是要让最后没有被用的硬盘空间最小。

考虑先收益再花费,一定是先格式化空间会变大的,然后再格式化空间会变小的一定不劣。

那么现在分开讨论这两种硬盘。

先来考虑格式化之后空间会变大的,先格式化格式化之前空间最小的一定不劣,因为我们会花费最小在每一块硬盘上,然后用它带来的贡献去弥补下一块硬盘。

再来考虑格式化之后空间会变小的,因为格式化这些硬盘的总代价不变,所以尽可能让最后没有被用的硬盘空间小,也就是格式化之后最小的硬盘一定放在最后;接着考虑前面的硬盘,因为最后的硬盘已经固定,就可以不考虑它,那么剩下的硬盘中格式化之后空间最小的一定放在最后;一直继续下去,也就是说按格式化之后硬盘的空间从大到小格式化一定不劣。

那么我们就能轻松解决此题了。

时间复杂度:$\Theta(n\log n)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
struct rec{int a,b;}e[2000001],q1[2000001],q2[20000001];
int n,t1,t2;
long long ans,now;
bool cmp1(rec a,rec b){return a.a<b.a;}
bool cmp2(rec a,rec b){return a.b>b.b;}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&e[i].a,&e[i].b);
if(e[i].a<=e[i].b)q1[++t1]=e[i];
else q2[++t2]=e[i];
}
sort(q1+1,q1+t1+1,cmp1);
sort(q2+1,q2+t2+1,cmp2);
for(int i=1;i<=t1;i++)
{
now-=q1[i].a;
if(now<0)
{
ans-=now;now=q1[i].b;
}
else now+=q1[i].b;
}
for(int i=1;i<=t2;i++)
{
now-=q2[i].a;
if(now<0)
{
ans-=now;now=q2[i].b;
}
else now+=q2[i].b;
}
printf("%lld",ans);
return 0;
}

rp++

[CSP-S模拟测试]:格式化(贪心)的更多相关文章

  1. csp-s模拟测试95

    csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...

  2. csp-s模拟测试99

    csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...

  3. csp-s模拟测试92

    csp-s模拟测试92 关于$T1$:最短路这一定建边最短路. 关于$T2$:傻逼$Dp$这一定线段树优化$Dp$. 关于$T3$:最小生成树+树P+换跟一定是这样. 深入(?)思考$T1$:我是傻逼 ...

  4. csp-s模拟测试85

    csp-s模拟测试85 $T1$全场秒切没有什么区分度,$T2$全场成功转化题意但是我并不会打,$T3$暴力都没打很遗憾. 100 00:21:49 02:56:35 02:56:49 135 02: ...

  5. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  6. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  7. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  8. [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)

    目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...

  9. 安装nginx python uwsgi环境 以及模拟测试

    uwsgi帮助文档: http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html http://uwsgi-docs.re ...

随机推荐

  1. dhcp协议简介

    协议分析 - DHCP协议解码详解 DHCP协议简介 DHCP,全称是 Dynamic Host Configuration Protocol﹐中文名为动态主机配置协议,它的前身是 BOOTP,它工作 ...

  2. shell with hadoop

    shell 命令操作 hadoop 之前多少提及过,这里做个总结. shell with hdfs 基本命令 bin/hadoop fs 大于下面的命令 bin/hdfs dfs dfs 是 fs 的 ...

  3. Freemarker模板的使用简介

    需要的jar包: 在pom.xml文件中贴入 <dependency> <groupId>junit</groupId> <artifactId>jun ...

  4. mac StarUML3.0.2破解

    mac StarUML3.0.2破解 StarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载.可以用来创建UML类图. 破解办法是通过asar工 ...

  5. Arm宣布将在Linux中应用事务内存扩展支持

    事务内存扩展是Arm对硬件事务内存的支持,用于改进对大型共享数据结构的并发访问. 在宣布事务性内存扩展和可伸缩向量扩展2时,Arm表示他们将很快为GNU工具链和LLVM提供支持.正如我们已经看到的,为 ...

  6. 不要和SB理论

    不要和SB理论,SB会把你拉倒和他和他一样的高度,然后用充分的经验把你打倒!!!

  7. Codeforces 902 树同型构造 多项式长除法构造(辗转相除法)

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  8. 如何配置SQL Server数据库远程连接

    本地数据库(SQL Server 2012或以上) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1.首先是要打开 数据的配置管理工具 2.配置相关的客户端协议,开启TCP/IP 3.数据库 ...

  9. Mac下安装nginx并配置SSL实现Https的访问

    一.nginx安装 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta ...

  10. 深入理解JAVA虚拟机 晚期(运行期)优化(转载)

    这一章节的内容实用性不强 所以不再手打笔记 转载了一篇 原文地址是http://blog.csdn.net/qq_27350929/article/details/54837595 在部分的商用虚拟机 ...