hdu 4442 Physical Examination
2015-11-12 15:50
239 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4442
题意:去体检,求做完所有检查所花费的最小时间模上一个数
花费的时间规则如下
有n项活动,每项活动有两个数字 a b
a代表现在去排队所花费的时间 b代表每一秒该活动需要等待的时间是多b秒
举个简单的例子
2
1 3 第一项活动1秒,执行完第一项活动之后执行第二项
1 9 由于先执行的第一项活动,执行第二项活动时所需的时间就变成了10秒
[b]题目分类:贪心[/b]
题目分析:因为当执行当前任务时,b是乘以现在所需要的时间,a是直接相加的,刚开始时想的是b的权重比较大,所以,按照b从大到小的排序,a不用管,后来细细想想,其实是有漏洞的,如果b比较小,而a特别大的时候,顺序就是不对的。
代码:
题意:去体检,求做完所有检查所花费的最小时间模上一个数
花费的时间规则如下
有n项活动,每项活动有两个数字 a b
a代表现在去排队所花费的时间 b代表每一秒该活动需要等待的时间是多b秒
举个简单的例子
2
1 3 第一项活动1秒,执行完第一项活动之后执行第二项
1 9 由于先执行的第一项活动,执行第二项活动时所需的时间就变成了10秒
[b]题目分类:贪心[/b]
题目分析:因为当执行当前任务时,b是乘以现在所需要的时间,a是直接相加的,刚开始时想的是b的权重比较大,所以,按照b从大到小的排序,a不用管,后来细细想想,其实是有漏洞的,如果b比较小,而a特别大的时候,顺序就是不对的。
代码:
#include<bits/stdc++.h> using namespace std; #define LL __int64 #define MOD 31536000 struct P { LL a,b; }num[100009]; //bj*ai<=aj*bi LL cmp(P X,P Y) { return X.a*Y.b<Y.a*X.b; } int main() { //freopen("in.txt","r",stdin); int n; while(scanf("%d",&n)&&n) { for(int i=1;i<=n;i++) { cin>>num[i].a>>num[i].b; } sort(num+1,num+n+1,cmp); /*for(int i=1;i<=n;i++) { cout<<num[i].a<<" "<<num[i].b<<endl; }*/ int ans=0; for(int i=1;i<=n;i++) { ans=(ans+ans*num[i].b+num[i].a)%MOD; } cout<<ans<<endl; } return 0; }
相关文章推荐
- HDU 3743 归并排序模板题
- 根据下拉列表,改变button的css和颜色
- Domain Computer Boot Up Process and site info
- Android视图状态及重绘流程分析,深入了解View(三)
- select,distinct,where,betweent,like
- CFLAGS 与 CXXFLAGS
- HTML 版本声明 DOCTYPE 标签
- view的封装
- ios 地图大头针固定在地图中心,用用地图中心点左边逆地理编码,及高德云图周边搜索
- 杭电1058 Humble Numbers
- Codeforces Testing Round #12 A. Divisibility( 容斥原理 )
- 防页面url缓存
- 基于Linux下的开源wavplay播放器
- u-boot-README
- java System.getProperty(“ ”) System.exit(int status)
- java InputStream读取数据问题
- 示波器的使用
- (转)理解Javascript_04_数据模型
- Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)
- iOS 解决iOS 9下的http请求发送失败问题