UVa11729
来源:互联网 发布:seo网站分析案例 编辑:程序博客网 时间:2024/06/06 07:17
题目链接
简介:
n个任务分配给n个部队做,每个部队都需要交代B的时间,执行J的时间
分析:
直觉告诉我们,执行时间长的任务需要早交代
那我们直接按照执行时间排序,一个一个交代就好了
为什么我们这么做事对的呢 TA:贪心不要证明
假设我们交换两个相邻的任务X和Y(交换前X在Y之前,交换后X
在Y之后),
不难发现,其他任务的完成时间没有影响,那么我们看着两个任务
情况一
交换之前,任务Y比X先结束
不难发现这样之后答案不会更好
情况二
交换之前,X比Y先结束
因此交换之后不会变优的重要条件是:
交换后X的结束时间不比交换前Y的结束时间早
这个条件可以写成:B[Y]+B[X]+J[X]>=B[x]+B[Y]+J[Y]
化简得J[X]>=J[Y],所以说我们要把执行时间长的先进行
//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=1010;struct node{ int B,J;};node a[N];int n;int cmp(const node &a,const node &b){ return a.J>b.J; //J 执行时间 }int main(){ int cnt=0; while (scanf("%d",&n)!=EOF&&n) { for (int i=1;i<=n;i++) scanf("%d%d",&a[i].B,&a[i].J); sort(a+1,a+1+n,cmp); int ans=0,time=0; for (int i=1;i<=n;i++) { time+=a[i].B; ans=max(ans,time+a[i].J); } printf("Case %d: %d\n",++cnt,ans); } return 0;}
阅读全文
0 0
- uva11729
- uva11729
- UVa11729
- UVA11729
- uva11729
- uva11729
- UVa11729
- uva11729
- uva11729
- uva11729
- UVa11729
- UVa11729
- uva11729--贪心
- UVA11729 贪心
- UVA11729--Commando War
- uva11729 - Commando War
- uva11729 - Commando War(water)
- UVA11729 Commando War
- PY 爬虫 Urllib2
- 监督学习之线性回归
- Date和String类型的相互转换(工具类DateTimeUntil的编写)
- 点击按钮对数据进行操作(2)
- JSP交互---EL表达式
- UVa11729
- 无线轮播图+触摸事件+地下小圆点
- php redis秒杀
- POJ-2965 The Pilots Brothers' refrigerator【模拟法】
- 一个项目中遇到bug
- MySQL自动备份及灾难恢复
- 关于%f与%lf
- AngularJS服务$http,$interval,$timeout
- sniff