noip模拟赛 业务办理
【问题描述】
在银行柜台前,有 n 个顾客排队办理业务。 队伍中从前往后,第 i 位顾客办理业务需要
ti 分钟时间。 一位顾客的等待时间定义为:队伍中在他之前的所有顾客和他自己的办理业务
时间的总和。第 i 位顾客有一个最长等待时间 di,如果超过了时间 di, 业务还没有办理完成,
那么这位顾客就会觉得不满意。 具体来说, 假设第 i 位顾客的等待时间为 fi,若 fi > di, 则这
位顾客的不满意度为 fi-di,否则不满意度为 0。
你作为银行里的职员,需要安排这 n 位顾客的初始排队顺序,使得不满意度最大的那位
顾客不满意度最小。
【输入】
输入的第 1 行包含一个正整数 n,表示顾客的数量。
输入的第 2 行包含 n 个正整数,第 i 个数表示 ti, 单位为分钟。
输入的第 3 行包含 n 个正整数,第 i 个数表示 di, 单位为分钟。
【输出】
输出包含 1 个整数,表示最大不满意度的最小值。
【输入输出样例 1】
| transact.in | transact.out |
| 3 5 8 10 11 15 13 |
8 |
见选手目录下的 transact / transact1.in 与 transact / transact1.out
【输入输出样例 1 说明】
| 排队顺序 | 1 | 3 | 2 |
| 业务办理时间 | 5 | 10 | 8 |
| 等待时间 | 5 | 15 | 23 |
| 最长等待时间 | 11 | 13 | 15 |
| 不满意度 | 0 | 2 | 8 |
最大不满意度为 8。 这是最大不满意度能达到的最小值。
【数据规模与约定】
对于 50%的数据, n≤10
对于 70%的数据, n≤1,000
对于 100%的数据, n≤100,000, 1≤ti≤104, 0≤di≤109
分析:看到最大值最小,本能的反应就是二分答案,但是二分完后又该怎么check呢?还不是要贪心地找一种排队顺序......所以根本就不需要二分嘛,直接贪心.这种排队的贪心一般都是按照某个量来排序,如果按每个人所花的时间来排序是肯定不对的,因为很有可能最后花的时间最长的那个人的最长等待时间最短.那就按照最长等待时间来排序吧,事实证明这是对的.
要怎么证明它呢?排序的贪心问题证明的一般方法是交换相邻的两个,假设已经按照贪心策略排序好了,第i个人的办理业务时间是a,最长等待时间是b,第i+1个人的办理业务时间是c,最长等待时间是d,1到i-1个人办理业务时间的总和是x.当第i个人在第i+1个人前面时,ans = max{x+a-b,x+a+c-d},当第i+1个人在第i个人前面时,ans = max{x+c-d,x+c+a-b},由于x+c+a-b > x+a+c-d,x+c+a-b>x+a-b,所以后面一种方式一定没有前一种优,所以按照最长等待时间排序是对的.
#include <map>
#include <cmath>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; int n, ans, sum; struct node
{
int t, d;
}e[]; bool cmp(node a, node b)
{
return a.d < b.d;
} int main()
{
scanf("%d", &n);
for (int i = ; i <= n; i++)
scanf("%d", &e[i].t);
for (int i = ; i <= n; i++)
scanf("%d", &e[i].d);
sort(e + , e + + n, cmp);
for (int i = ; i <= n; i++)
{
sum += e[i].t;
if (sum - e[i].d > ans)
ans = sum - e[i].d;
} printf("%d\n", ans);
return ;
}
noip模拟赛 业务办理的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- TestNG设置用例循环执行
曾经做过一需求,需要单个集成测试用例循环执行N次,或许你会说for循环就可以了,这当然是可以的.那有没有逼格更高点的方法,当然也是有的.下面我们就说下使用TestNG注解功能实现用例的循环执行. 1. ...
- deepin 安装maven
1.在官网 http://maven.apache.org/download.cgi 下载mvn包 2.新建mvn目录 mkdir /usr/local/mvn 把压缩包解压到mvn目录下面 修 ...
- 大数高精度加减乘除 51nod 1005 大数加法
1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B ...
- ASP.NET XML文件
XML是一种标记语言,具有描述所有已知和未知数据的能力.XML扩展性比较好,可以为新的数据类型制定新的数据描述规则,作为对标记集的扩展. XML的特点: 1.XML数据可以跨平台使用并可以被人阅读理解 ...
- Java学习笔记-eclipse配置
一.配置Java环境变量 JAVA_HOME:D:\Program Files\Java\jdk1.7.0_76 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HO ...
- [ ZJOI 2010 ] 网络扩容
\(\\\) Description 给定一张有向图,每条边都有一个容量 \(C\) 和一个扩容费用 \(W\). 这里扩容费用是指将容量扩大 \(1\) 所需的费用.求: 在不扩容的情况下, \(1 ...
- poj3279 Fliptile
思路: 枚举. 枚举了第一行的操作之后,下面每行的操作也随之确定了.因为在确定了第i行的操作之后,要想再改变a[i][j]的状态只能通过改变a[i + 1][j]来实现.另外,用到了集合的整数表示方法 ...
- 2017-12-01HTML块及引用
HTML块1.HTML块元素 快元素在显示时,通常会以新行开始 例如:<h1>.<p>.<ul>2.HTML内联元素 内联元素通常不会以新行开始 例如:<b& ...
- ES6特性之模块【Modules】
ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范.commonjs主要应用于服务器,实现同步加载,如nodejs.AMD规范应用于浏览器,如requirejs,为异步加载 ...
- TASKCTL5.0日志乱码解决方案
从大学毕业到现在,做了不少银行外包项目,数据类的项目基本都用到taskctl调度产品,一直习以为然,觉得调度产品都应该是这样的,所以也没觉得怎样,直到后来有两个外包项目没用taskctl调度工具,要接 ...