usaco 1.2.1 Milking Cows 挤牛奶
来源:互联网 发布:mac电脑怎么用千牛 编辑:程序博客网 时间:2024/06/09 13:42
usaco 1.2.1
Milking Cows 挤牛奶
这是一道区间合并问题。我的算法如下;
对于输入数据:
读入时开一个二维数组tt,按顺序读入300,1000,700,1200,1500,2100;
其中区间开头的数值做标记1,区间终点做标记-1;
这样tt就变成了:[i][0]3001000700120015002100[i][1]1-11-11-1然后顺序遍历这个数组;
开一个计数器变量ct=0;
每当当前的数标记为1时ct++,标记为-1时ct--;
每当ct恰好==0时就完成了一个大区间合并;
其他工作就好做了;
代码如下:
对于输入数据:
3300 1000700 12001500 2100可得三个区间[300,1000][700,1200][1500,2100]
读入时开一个二维数组tt,按顺序读入300,1000,700,1200,1500,2100;
其中区间开头的数值做标记1,区间终点做标记-1;
这样tt就变成了:[i][0]3001000700120015002100[i][1]1-11-11-1然后顺序遍历这个数组;
开一个计数器变量ct=0;
每当当前的数标记为1时ct++,标记为-1时ct--;
每当ct恰好==0时就完成了一个大区间合并;
其他工作就好做了;
代码如下:
/*ID: wsc5001LANG: CTASK: 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 挤牛奶
- Usaco 1.2.1 挤牛奶(Milking Cows)
- 【USACO题库】1.2.1 Milking Cows挤牛奶(模拟)
- 【USACO题库】1.2.1 Milking Cows挤牛奶
- 【USACO题库】1.2.1 Milking Cows挤牛奶
- USACO——Milking Cows 挤牛奶
- USACO——Milking Cows 挤牛奶
- Milking Cows 挤牛奶
- Milking Cows 挤牛奶
- Milking Cows 挤牛奶
- Milking Cows 挤牛奶--贪心
- 【区间计数】Milking Cows 挤牛奶 (milk2) Usaco_Training 1.2
- USACO1.2.1 Milking Cows(挤牛奶)
- USACO1.2 挤牛奶Milking Cows
- [USACO1.2]挤牛奶Milking Cows
- USACO 1.2.1 Milking Cows
- [USACO 1.2.1] Milking Cows
- 团购倒计时特效代码 带天数日期及分时秒
- 用marquee和div+js实现首尾相连循环滚动
- Using Simple Technique to Improve Your Lighting Effect
- nginx多进程模型之热代码平滑升级
- Android-一些关于代码优化的事儿
- usaco 1.2.1 Milking Cows 挤牛奶
- IT项目需求获取和管理
- 在ubuntu11.10中安装chrome浏览器
- js模拟腾讯文本内容定时向上滚动特效
- 在家上用宽带IPv6网站,下载六维,IPv4 to IPv6
- USACO 1.2 Transformations(模拟)
- CENTOS下 ORACLE安装rlwrap工具
- Git使用笔记(3)cherry pick
- 白乔原创:VC之美化界面篇