BZOJ1727: [Usaco2006 Open]The Milk Queue 擠奶隊列
阿新 • • 發佈:2017-09-28
bzoj zoj 時間 lib tor using for 兩個 tdi
n<=25000個牛,擠奶兩道工序兩個人來做,要先第一道工序才能第二道,先第一道工序的牛要先第二道工序,一個人同時最多擠奶一頭牛,給每頭牛兩道工序時間求最少用多長時間。
AC率這麽高的題又不會。很好。
看兩頭牛,第一頭A1,B1,第二頭A2,B2,要1在前面,除非:
這個化簡就是:
按這個排序即可。最後統計答案的時候,記個A的前綴和,從頭到尾掃,如果前綴和大於當前時間說明第一個人做了很久使第二個人空閑了,那就把當前時間變成這個前綴和,加上最後一個人的B時間即可。
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4View Code//#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 intmain() 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 }
BZOJ1727: [Usaco2006 Open]The Milk Queue 擠奶隊列