HDU 4442 Physical Examination(贪心)
HDU 4442 Physical Examination(贪心)
题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=4442
Description
WANGPENG is a freshman. He is requested to have a physical examination when entering the university.
Now WANGPENG arrives at the hospital. Er….. There are so many students, and the number is increasing!
There are many examination subjects to do, and there is a queue for every subject. The queues are getting longer as time goes by. Choosing the queue to stand is always a problem. Please help WANGPENG to determine an exam sequence, so that he can finish all the physical examination subjects as early as possible.
Input
There are several test cases. Each test case starts with a positive integer n in a line, meaning the number of subjects(queues).
Then n lines follow. The i-th line has a pair of integers (ai, bi) to describe the i-th queue:
- If WANGPENG follows this queue at time 0, WANGPENG has to wait for ai seconds to finish this subject.
- As the queue is getting longer, the waiting time will increase bi seconds every second while WANGPENG is not in the queue.
The input ends with n = 0.For all test cases, 0<n≤100000, 0≤ai,bi<2^31.
Output
For each test case, output one line with an integer: the earliest time (counted by seconds) that WANGPENG can finish all exam subjects. Since WANGPENG is always confused by years, just print the seconds mod 365×24×60×60.
Sample Input
5
1 2
2 3
3 4
4 5
5 6
0
Sample Output
1419
题意:
给你n个队伍每个队伍都要排一次,每个队伍要排a秒,如果不排,则每秒过后排这个队伍要增加b秒问最少多少时间排完所有的队伍。
题解:
我们现在假设两个队伍分别是a1,b1,a2,b2。现在如果先排第一队,花费a1+a2+a1b1。如果先排第二队则花费a1+a2+a2b1这样我们明显可以得到应该选择a1b2与a2b1中小的那个。这样按照这个排序,得出最小的即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int n;
const int maxn = 100100;
const int mod = 365*24*60*60;
struct node{
long long a,b;
bool operator < (const node &R)const{
return a*R.b < b*R.a;
}
}s[maxn];
int main()
{
while (scanf("%d",&n)&&(n!=0)){
for (int i = 0; i < n; i++)
scanf("%lld %lld",&s[i].a,&s[i].b);
sort(s,s+n);
long long ans = 0;
for (int i = 0; i < n; i++){
ans = (ans + s[i].a + s[i].b*ans%mod)%mod;
}
printf("%lld\n",ans);
}
return 0;
}
HDU 4442 Physical Examination(贪心)的更多相关文章
- hdu 4442 Physical Examination 贪心排序
Physical Examination Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 4442 Physical Examination
Physical Examination Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- HDU 4442 Physical Examination(关于贪心排序)
这个题目用贪心来做,关键是怎么贪心最小,那就是排序的问题了. 加入给定两个数a1, b1, a2, b2.那么如果先选1再选2的话,总的耗费就是a1 + a1 * b2 + a2; 如果先选2再选1, ...
- hdu 4442 Physical Examination (2012年金华赛区现场赛A题)
昨天模拟赛的时候坑了好久,刚开始感觉是dp,仔细一看数据范围太大. 题目大意:一个人要参加考试,一共有n个科目,每个科目都有一个相应的队列,完成这门科目的总时间为a+b*(前面已完成科目所花的总时间) ...
- hdu4442 Physical Examination(贪心)
这种样式的最优解问题一看就是贪心.如果一下不好看,那么可以按照由特殊到一般的思维方式,先看n==2时怎么选顺序(这种由特殊到一般的思维方式是思考很多问题的入口): 有两个队时,若先选第一个,则ans= ...
- HDU 5835 Danganronpa (贪心)
Danganronpa 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5835 Description Chisa Yukizome works as ...
- HDU 5821 Ball (贪心)
Ball 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5821 Description ZZX has a sequence of boxes nu ...
- hdu 4004 (二分加贪心) 青蛙过河
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂 ...
- Saving HDU(hdu2111,贪心)
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- 模块化与MVC
[javascript激增的思考02]模块化与MVC 前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于 ...
- 使用ResourceDictionary管理Logical Resources
WPF整理-使用ResourceDictionary管理Logical Resources “Logical resources may be of various types, such as br ...
- Android 权限管理
从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限.它还让用户可以对应 ...
- 理解Javascript的状态容器Redux
Redux要解决什么问题? 随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状态). 这些 state 可能包括服务器响应.缓存数据. ...
- 用php 进行对文件的操作 (上)
如何让自己磁盘中的文件夹和目录显示在网页上?那就来看一下,用php是怎么来操作他们的吧 php中文件,一般包含两块内容,文件和目录 先来一句一句的看代码,及他的作用 运行后看一下结果 file 指的是 ...
- 卸载jdk以及重新安装jdk
新旧交替重复安装会混乱,个人解决办法是: 1. 用系统 control panel 中 uninstall 卸载java se development kit 和 java update. 2. 打开 ...
- Git安装使用
转载:http://www.open-open.com/lib/view/open1414396787325.html 1.window版地址 https://git-for-windows.gith ...
- hdu1037
#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; while ...
- 批处理+组策略 实现规定时间段无法开机and定时关机
某爱熬夜的人对付自己的东西 1.shutdown命令 shutdown -a #取消现有的shutdown计划 shutdown -s -t [time] #设定时间关机 shutdown -r -t ...
- Vultr新加坡机房速度怎么样?值得购买吗?最新评测!
2016年9月,Vultr vps开通了新加坡Singapore机房线路.与知名的竞争对手Digitalocean和Linode一样,新加坡机房对亚洲速度友好,是讨用户欢心的一个进步. 但是,vult ...
题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=4442
Description
WANGPENG is a freshman. He is requested to have a physical examination when entering the university.
Now WANGPENG arrives at the hospital. Er….. There are so many students, and the number is increasing!
There are many examination subjects to do, and there is a queue for every subject. The queues are getting longer as time goes by. Choosing the queue to stand is always a problem. Please help WANGPENG to determine an exam sequence, so that he can finish all the physical examination subjects as early as possible.
Input
There are several test cases. Each test case starts with a positive integer n in a line, meaning the number of subjects(queues).
Then n lines follow. The i-th line has a pair of integers (ai, bi) to describe the i-th queue:
- If WANGPENG follows this queue at time 0, WANGPENG has to wait for ai seconds to finish this subject.
- As the queue is getting longer, the waiting time will increase bi seconds every second while WANGPENG is not in the queue.
The input ends with n = 0.For all test cases, 0<n≤100000, 0≤ai,bi<2^31.
Output
For each test case, output one line with an integer: the earliest time (counted by seconds) that WANGPENG can finish all exam subjects. Since WANGPENG is always confused by years, just print the seconds mod 365×24×60×60.
Sample Input
5
1 2
2 3
3 4
4 5
5 6
0
Sample Output
1419
题意:
给你n个队伍每个队伍都要排一次,每个队伍要排a秒,如果不排,则每秒过后排这个队伍要增加b秒问最少多少时间排完所有的队伍。
题解:
我们现在假设两个队伍分别是a1,b1,a2,b2。现在如果先排第一队,花费a1+a2+a1b1。如果先排第二队则花费a1+a2+a2b1这样我们明显可以得到应该选择a1b2与a2b1中小的那个。这样按照这个排序,得出最小的即可。
代码:
#include <bits/stdc++.h>
using namespace std;
int n;
const int maxn = 100100;
const int mod = 365*24*60*60;
struct node{
long long a,b;
bool operator < (const node &R)const{
return a*R.b < b*R.a;
}
}s[maxn];
int main()
{
while (scanf("%d",&n)&&(n!=0)){
for (int i = 0; i < n; i++)
scanf("%lld %lld",&s[i].a,&s[i].b);
sort(s,s+n);
long long ans = 0;
for (int i = 0; i < n; i++){
ans = (ans + s[i].a + s[i].b*ans%mod)%mod;
}
printf("%lld\n",ans);
}
return 0;
}
Physical Examination Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
Physical Examination Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
这个题目用贪心来做,关键是怎么贪心最小,那就是排序的问题了. 加入给定两个数a1, b1, a2, b2.那么如果先选1再选2的话,总的耗费就是a1 + a1 * b2 + a2; 如果先选2再选1, ...
昨天模拟赛的时候坑了好久,刚开始感觉是dp,仔细一看数据范围太大. 题目大意:一个人要参加考试,一共有n个科目,每个科目都有一个相应的队列,完成这门科目的总时间为a+b*(前面已完成科目所花的总时间) ...
这种样式的最优解问题一看就是贪心.如果一下不好看,那么可以按照由特殊到一般的思维方式,先看n==2时怎么选顺序(这种由特殊到一般的思维方式是思考很多问题的入口): 有两个队时,若先选第一个,则ans= ...
Danganronpa 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5835 Description Chisa Yukizome works as ...
Ball 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5821 Description ZZX has a sequence of boxes nu ...
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4004 题目意思是青蛙要过河,现在给你河的宽度,河中石头的个数(青蛙要从石头上跳过河,这些石头都是在垂 ...
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
[javascript激增的思考02]模块化与MVC 前言 之前我们遇到了这么一个项目,也就是我们昨天提到的,有很多的小窗口的,昨天说的太抽象了,今天我们再来理一理什么是小窗口(后面点说下),当时由于 ...
WPF整理-使用ResourceDictionary管理Logical Resources “Logical resources may be of various types, such as br ...
从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限.它还让用户可以对应 ...
Redux要解决什么问题? 随着 JavaScript 单页应用开发日趋复杂,JavaScript 需要管理比任何时候都要多的 state (状态). 这些 state 可能包括服务器响应.缓存数据. ...
如何让自己磁盘中的文件夹和目录显示在网页上?那就来看一下,用php是怎么来操作他们的吧 php中文件,一般包含两块内容,文件和目录 先来一句一句的看代码,及他的作用 运行后看一下结果 file 指的是 ...
新旧交替重复安装会混乱,个人解决办法是: 1. 用系统 control panel 中 uninstall 卸载java se development kit 和 java update. 2. 打开 ...
转载:http://www.open-open.com/lib/view/open1414396787325.html 1.window版地址 https://git-for-windows.gith ...
#include <iostream> #include <cstdio> using namespace std; int main() { int a,b,c; while ...
某爱熬夜的人对付自己的东西 1.shutdown命令 shutdown -a #取消现有的shutdown计划 shutdown -s -t [time] #设定时间关机 shutdown -r -t ...
2016年9月,Vultr vps开通了新加坡Singapore机房线路.与知名的竞争对手Digitalocean和Linode一样,新加坡机房对亚洲速度友好,是讨用户欢心的一个进步. 但是,vult ...