/*
ID: fykalv3
LANG: C
TASK: milk2
*/
#include <stdio.h>
#include <string.h>
#define MAX 1000000
/*
第一次写hash表,之前看过很多提到hash的东西没有写过,据说在大量的搜索中效率很高。这次用了hash,最大的体会就是hash的作用就是mark,方便以后的操作查找相关的信息
其实记录最后的结果如果类型一样在不引起歧义的情况下,可以用数组来代替各种变量,代码就更简洁了
*/
int main()
{
FILE *fin = fopen("milk2.in", "r");
FILE *fout = fopen("milk2.out", "w");
int max[2] = {0}; // 简化代码
int i, j, n, a, b, m1 = 1000000, m2 = 0;
int hash[MAX];
fscanf(fin, "%d", &n);
memset(hash, 0, sizeof(hash));
for (i = 0; i < n; i++) {
fscanf(fin, "%d %d", &a, &b);
if (a < m1) m1 = a; //找到较小的那个位置
if (b > m2) m2 = b; // 找到较大的位置
for (j = a; j < b; j++) //在a b中间的所有的位置都设置为1,mark一下,意思就是这个时间段有人挤奶
hash[j] = 1;
}
for (i = m1; i < m2; i += j) {
for (j = 1; hash[i+j] == hash[i]; ++j) //遍历hash表,用j来记录中间是1或者是0的位置有多少
;
if (j > max[hash[i]]) // 每次遍历都去比较找到最大的位置
max[hash[i]] = j;
}
fprintf(fout, "%d %d\n", max[1], max[0]);
fclose(fin);
fclose(fout);
exit(0);
}
分享到:
相关推荐
### USACO 题目解析:Milking Cows #### 题目背景与要求 本题目来源于美国计算机奥林匹克竞赛(USACO),题目名为“Milking Cows”。题目描述了一个有趣的场景:三位农民每天早上给三头牛挤奶,并给出了各自的挤奶...
6 [1.2] 挤牛奶Milking Cows 7 [1.2] 方块转换 Transformations 8 [1.2] 回文平方数 Palindromic Squares 9 [1.2] 双重回文数 Dual Palindromes 10 [1.3] 混合牛奶 Mixing Milk 11 [1.3] 修理牛棚 Barn Repair 12 ...
1.2.1 "Milking Cows" 可能与数组和排序有关,可能是优化挤牛奶的效率问题。 1.2.3 "Name That Number" 可能是关于数字表示和逻辑推理的问题。 1.2.4 "Palindromic Squares" 和 "Dual Palindromes" 强调了对回文数的...
接着,1.2节重点是完整搜索,如"Milking Cows"中运用离散化技术,"Transformations"和"Name That Number"通过枚举解决,而"Palindromic Squares"和"Dual Palindromes"进一步强化了枚举法的应用。 1.3节围绕贪心算法...
1. **听力理解**:听力部分涵盖了多种句型和场景,如日常活动(如 milking cows, go camping)、比较级(runs faster than)、购物需求(writing paper and an envelope)、季节活动(go climbing in autumn)等。...
随着难度的提升,本章开始引入更复杂的问题,例如“Milking Cows”,这道题目的解决策略需要运用到贪心算法。此外,“Transformations”、“Name That Number”等题目进一步加深了对模拟算法的理解。 ### 四、...
8. **算法优化**:在"Milking Cows"和"Transformations"题目中,优化算法的关键在于减少对已有列表的直接修改,而是创建新列表来存储结果,这样可以使程序执行过程更简单,也更易于理解。 通过理解和应用这些知识点...
5. **Milking Cows (milk2)**: 本题涉及时间调度,有三种主要思路。第一种是离散化,通过排序并遍历,复杂度为O(nlogn+n)。第二种思路是在保持字符串不变的情况下,每次将首位移至末尾,从而从两头同时搜索。第三种...
Chapter 1 Section 1.2 Milking Cows (milk2) 这道题有三种思想。第一种思想是离散化(其实就是进行了优化的搜索而已),按照开始时间升序排序,然后从左到右扫一遍,复杂度是 O(nlogn+n) 的(排序+扫一遍,用堆、...
### Chapter 1 Section 1.2 - Milking Cows (milk2) 本题提出了三种解题思路。一种是离散化,通过对开始时间进行排序,然后遍历整个序列,复杂度为O(nlogn+n)。这种方法的关键是维护一个当前区间`[tmp_begin, tmp_...
#### Milking Cows 这道题考察了学生对动态规划的理解和应用能力。题目背景通常是关于如何最大化奶牛产奶量的问题,可以通过构建状态转移方程来求解最优解。动态规划的核心思想是将一个复杂问题分解成一系列更小的...
**1.2.1 Milking Cows** - **问题描述**:此题要求计算奶牛挤奶的最优方案,以达到最大化的产出。 - **算法思想**:可以使用贪心策略来解决问题,例如按照预期产出的降序来安排奶牛的挤奶顺序。 **1.2.2 ...
When the cows come to the barn for milking, they always come in sequential order from 1 to N. Farmer John, who majored in mathematics in college and loves numbers, often looks for patterns. He has ...
11. **Milking Grid** - KMP算法用于寻找最小重复子矩阵,计算长度和宽度的最小公倍数。 12. **Popular Cows** - 找到图中所有可达顶点,通过反向边和强连通分量(Strongly Connected Components, SCC)进行缩点。 ...
#### 2387 Til the Cows Come Home - 最短路 - **知识点**:最短路径算法。 #### 2391 *Ombrophobic Bovines - 最大流 - **知识点**:最大流算法。 #### 2394 Checking an Alibi - 最短路 - **知识点**:最短...