码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ1727: [Usaco2006 Open]The Milk Queue 挤奶队列

时间:2017-09-28 22:25:58      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:i++   algorithm   amp   fine   return   log   ios   stream   turn   

n<=25000个牛,挤奶两道工序两个人来做,要先第一道工序才能第二道,先第一道工序的牛要先第二道工序,一个人同时最多挤奶一头牛,给每头牛两道工序时间求最少用多长时间。

AC率这么高的题又不会。很好。

看两头牛,第一头A1,B1,第二头A2,B2,要1在前面,除非:技术分享

这个化简就是:技术分享

按这个排序即可。最后统计答案的时候,记个A的前缀和,从头到尾扫,如果前缀和大于当前时间说明第一个人做了很久使第二个人空闲了,那就把当前时间变成这个前缀和,加上最后一个人的B时间即可。

技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 //#include<math.h>
 5 #include<algorithm>
 6 #include<iostream>
 7 using namespace std;
 8 
 9 int n;
10 #define maxn 25011
11 struct Node
12 {
13     int a,b;
14     bool operator < (const Node &p) const
15     {return min(p.a,b)>min(p.b,a);}
16 }p[maxn];int sum[maxn];
17 int main()
18 {
19     scanf("%d",&n);
20     for (int i=1;i<=n;i++) scanf("%d%d",&p[i].a,&p[i].b);
21     sort(p+1,p+1+n);
22     sum[0]=0;for (int i=1;i<=n;i++) sum[i]=sum[i-1]+p[i].a;
23     int tot=0;
24     for (int i=1;i<=n;i++)
25     {
26         if (sum[i]>tot) tot=sum[i];
27         tot+=p[i].b;
28     }
29     printf("%d\n",tot);
30     return 0;
31 }
View Code

 

BZOJ1727: [Usaco2006 Open]The Milk Queue 挤奶队列

标签:i++   algorithm   amp   fine   return   log   ios   stream   turn   

原文地址:http://www.cnblogs.com/Blue233333/p/7608738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!