usaco 1.2.1 Milking Cows 题解
2012-01-10 21:59
246 查看
【算法】模拟 【难度】★☆☆☆☆
这是一道区间合并问题。我的算法如下;对于输入数据:
3 300 1000 700 1200 1500 2100
可得三个区间[300,1000][700,1200][1500,2100]
读入时开一个二维数组tt,按顺序读入300,1000,700,1200,1500,2100;
其中区间开头的数值做标记1,区间终点做标记-1;
这样tt就变成了:
[i][0] | 300 | 1000 | 700 | 1200 | 1500 | 2100 |
[i][1] | 1 | -1 | 1 | -1 | 1 | -1 |
开一个计数器变量ct=0;
每当当前的数标记为1时ct++,标记为-1时ct--;
每当ct恰好==0时就完成了一个大区间合并;
其他工作就好做了;
也可以理解为离散化;
【收获】离散化的区间处理
View Code
/* ID: wsc5001 LANG: C TASK: milk2 */ #include <stdio.h> #include <stdlib.h> long int tt[10010][2]={0}; void quicksort (int f,int r) { int i,j; long int t0,t1; i=f; j=r; t0=tt[i][0]; t1=tt[i][1]; while (i<j) { while (i<j&&tt[j][0]>t0){j--;} if(i<j) { tt[i][0]=tt[j][0]; tt[i][1]=tt[j][1]; i++; } while (i<j&&tt[i][0]<t0){i++;} if(i<j) { tt[j][0]=tt[i][0]; tt[j][1]=tt[i][1]; j--; } } tt[i][0]=t0; tt[i][1]=t1; if (i-1>f) quicksort(f,i-1); if (j+1<r) quicksort(j+1,r); } int main() { FILE *fin,*fout; fin=fopen("milk2.in","r"); fout=fopen("milk2.out","w"); int n; int i,j,t,flag=1; long int a,b,f,r,tf,maxk=0,maxm=0,q,w; long int temp[2][2]; fscanf(fin,"%d",&n); //读入时间表 //开始时刻标记1 结束时刻标记-1 for (i=0;i<2*n;i++) { fscanf(fin,"%ld",&tt[i][0]); tt[i][1]=flag; flag=flag*-1; } //按时间先后排序 quicksort(0,2*n-1); a=tt[0][0]; q=0;//计数 //a 是起点 b 是终点 for (i=0;i<2*n;i++) { if (tt[i][1]==1) q++; if (tt[i][1]==-1) q--; if (q==0) { b=tt[i][0]; tf=b-a; if (tf>maxk) maxk=tf; tf=tt[i+1][0]-b; if (tf>maxm) maxm=tf; a=tt[i+1][0]; } } fprintf(fout,"%ld %ld\n",maxk,maxm); //system("pause"); fclose(fin); fclose(fout); }
相关文章推荐
- USACO 1.2.1 Milking Cows
- Usaco 1.2.1 挤牛奶(Milking Cows)
- usaco1.2.1 Milking Cows
- USACO1.2.1 Milking Cows (milk2)
- USACO Section 1.2.1 Milking Cows
- USACO 1.2.1 Milking Cows
- USACO1.2.1 Milking Cows(挤牛奶)
- USACO之Section1.2.1 Milking Cows [其他]
- USACO1.2.1--Milking Cows
- USACO1.2.1 Milking Cows (milk2)
- USACO 1.2.1 Milking Cows
- USACO 1.2.1 - MIlking Cows(模拟)
- USACO 1.2.1 Milking Cows(milk2)
- USACO 1.2.1 Milking Cows
- [USACO 1.2.1] Milking Cows
- USACO1.2.1 Milking Cows 给奶牛挤奶
- USACO 1.2.1 Milking Cows
- usaco 1.2.1 Milking Cows 挤牛奶
- usaco 1.2.1 Milking Cows
- USACO 1.2.1 Milking Cows 挤牛奶