USACO 1.2.1 Milking Cows(milk2)
2011-03-21 16:01
417 查看
1、按照开始时间升序排序(快排),然后从左到右扫一遍,复杂度O(nlogn+n)
2、快排是自己写的,因为是数组排序,比较容易出问题。
2、快排是自己写的,因为是数组排序,比较容易出问题。
/* ID: gengjia1 LANG: C TASK: milk2 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> //////////////////////// 快速排序 ////////////////////////// int partition(int t[][2], int low, int high) { int pivotkey = t[low][0]; while (low<high) { while (low<high && t[high][0] >= pivotkey) --high; t[low][0] = t[high][0]; t[low][1] = t[high][1]; while (low<high && t[low][0] <= pivotkey) ++low; t[high][0] = t[low][0]; t[high][1] = t[low][1]; } t[low][0] = pivotkey; return low; } void qsort(int t[][2], int low, int high) { int pivotloc; if (low < high) { pivotloc = partition(t, low, high); qsort(t, low, pivotloc-1); qsort(t, pivotloc+1, high); } } int main(void) { FILE *fin = fopen ("milk2.in", "r"); FILE *fout = fopen ("milk2.out", "w"); int N, t; int max_do = 0, max_undo = 0; int time[5000][2]; int begin, end; int tmp_begin, tmp_end; int i, j; fscanf (fin, "%d", &N); assert(N >= 1); assert(N <= 5000); for(i = 0; i < N; i++) { for(j = 0; j < 2; j++) { fscanf (fin, "%d", &t); assert(t > 0); time[i][j] = t; } } //按开始时间升序排序 qsort(time, 0, N-1); //计算最大值 tmp_begin = time[0][0]; tmp_end = time[0][1]; for(i = 1; i < N; i++) { begin = time[i][0]; end = time[i][1]; if(begin < tmp_end) { if(tmp_end < end) { tmp_end = end; } if(max_do < tmp_end - tmp_begin) { max_do = tmp_end - tmp_begin; } } else { if(max_undo < begin - tmp_end) { max_undo = begin - tmp_end; } tmp_begin = begin; tmp_end = end; } } fprintf (fout, "%d %d/n", max_do, max_undo); fclose(fin); fclose(fout); exit(0); }
相关文章推荐
- USACO1.2.1 Milking Cows (milk2)
- USACO1.2.1 Milking Cows (milk2)
- USACO 1.2.1 - MIlking Cows(模拟)
- usaco1.2.1 Milking Cows
- USACO 1.2.1 Milking Cows
- usaco 1.2.1 milk2
- USACO 1.2 Milking Cows (milk2)
- 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 1.2.1 Milking Cows 题解
- 【区间计数】Milking Cows 挤牛奶 (milk2) Usaco_Training 1.2
- usaco 1.2.1 Milking Cows 挤牛奶
- USACO1.2.1 Milking Cows(挤牛奶)
- USACO Section 1.2.1 Milking Cows
- USACO1.2.1 Milking Cows 给奶牛挤奶
- USACO 1.2.1 Milking Cows