[USACO 1.2.1]挤牛奶
2013-01-22 12:26
225 查看
地址:http://hustoj.sinaapp.com/problem.php?id=1820
按开始时间排序,然后统计最长挤牛奶时间段和最长间隔段。快排又写错了一次......
按开始时间排序,然后统计最长挤牛奶时间段和最长间隔段。快排又写错了一次......
#include<stdio.h> int a[5000][2],n; int ones(int l,int r) { int i=l,j=r,flag=0,key=a[l][0]; int t1,t2; while(i<j) { if(0==flag) { if(a[j][0]<key) { t1=a[j][0]; t2=a[j][1]; a[j][0]=a[i][0]; a[j][1]=a[i][1]; a[i][0]=t1; a[i][1]=t2; flag=1; } else { j--; } } else { if(a[i][0]>key) { t1=a[j][0]; t2=a[j][1]; a[j][0]=a[i][0]; a[j][1]=a[i][1]; a[i][0]=t1; a[i][1]=t2; flag=0; } else { i++; } } } return i; } void quick(int l,int r) { int mid; if(l<r) { mid=ones(l,r); quick(l,mid-1); quick(mid+1,r); } } int main() { int i,max1=0,max2=0,t1=0,t2=0,t[2]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d %d",&a[i][0],&a[i][1]); } quick(0,n-1); t[0]=a[0][0]; t[1]=a[0][1]; max1=t1=t[1]-t[0]; for(i=1;i<n;i++) { if(a[i][0]<=t[1]) { if(a[i][1]>t[1]) { t1=t1+a[i][1]-t[1]; t[1]=a[i][1]; } } else { t1=a[i][1]-a[i][0]; t2=a[i][0]-t[1]; t[0]=a[i][0]; t[1]=a[i][1]; } max1=t1>max1?t1:max1; max2=t2>max2?t2:max2; } printf("%d %d\n",max1,max2); return 0; }
相关文章推荐
- 【USACO 1.2.1】挤牛奶
- USACO 1.2.1 Milking Cows 挤牛奶
- [USACO 1.2.1]挤牛奶 (快排)
- Usaco 1.2.1 挤牛奶(Milking Cows)
- usaco 1.2.1 Milking Cows 挤牛奶
- USACO1.2.1 Milking Cows(挤牛奶)
- 普及练习场 贪心 [USACO1.3]混合牛奶 Mixing Milk
- USACO 1.2.1 Milking Cows
- USACO——Milking Cows 挤牛奶
- USACO1.2.1--Milking Cows
- USACO题解milk2 挤牛奶
- USACO 1.2.1 Milking Cows
- USACO1.2.1 Milking Cows 给奶牛挤奶
- 【USACO1.2_1】★Milking Cows 挤牛奶
- 【洛谷 3093】[USACO13DEC]牛奶调度Milk Scheduling
- USACO 1.2_挤牛奶_离散
- 洛谷P1208 [USACO1.3]混合牛奶 Mixing Milk
- USACO 1.4 Mother's Milk 母亲的牛奶(经典的dfs倒水问题)
- USACO——Mixing Milk 混合牛奶
- usaco 1.2.1 Milking Cows