USACO 2013 JAN
一、题目概览
中文题目名称 |
镜子 |
栅栏油漆 |
奶牛排队 |
英文题目名称 |
mirrors |
paint |
lineup |
可执行文件名 |
mirrors |
paint |
lineup |
输入文件名 |
mirrors.in |
paint.in |
lineup.in |
输出文件名 |
mirrors.out |
paint.out |
lineup.out |
每个测试点时限 |
1秒 |
1秒 |
1秒 |
测试点数目 |
10 |
10 |
10 |
每个测试点分值 |
10 |
10 |
10 |
比较方式 |
全文比较 |
全文比较 |
全文比较 |
二、运行内存限制
运行内存上限 |
128 M |
128 M |
128 M |
注:感谢老胡鼎力翻译。【错误会有的,语句也不是那么流畅……】
1.镜子{Bronze题1}
【问题描述】
农民约翰安装了N(1 <= N <= 200)个带有反光镜的栅栏,他希望从他的坐标为(0,0)的家中看到坐标为(a,b)的牛的情况。
栅栏在整数坐标(x_i, y_i),形状是'/'或者'\'的45度线段,比如坐标(3,5)的'/'形栅栏可以被描述成(2.9,4.9) 到 (3.1,5.1)的线段。每个栅栏位于不同的位置,坐标范围是[-1,000,000..1,000,000],(0,0) 和(a,b).处没有栅栏。
农民约翰位于(0,0),面朝+X方向,他希望通过栅栏上反光镜看到(a,b)的情况。不幸的是,他可能放错了其中的一个反光镜的形状,请找出并调整这个镜子,使得他能够顺利地看到(a,b)的牛的情况。
【文件输入】
第一行为三个整数N,a,b。
接下来2..N+1行,每行三个整数,分别表示坐标和形状。
【文件输出】
输出共一行,一个整数,表示调整的镜子的编号。若无需调整则输出0,若调整后仍不能看到则输出-1。
【输入样例】
5 6 2
3 0 /
0 2 /
1 2 /
3 2 \
1 3 \
【输出样例】
4
【样例说明】
将坐标为(3,2)的反光镜从\调整为/。
2. 栅栏油漆{silver题1}
【问题描述】
农民约翰在奶牛贝西的身上栓了一个油漆桶,并绑上一个刷子,命令他沿着栅栏的边缘跑动,以此来给栅栏油漆。
栅栏看成一条一维的线段,贝西一开始位于位置0,他将收到N条命令 (1 <= N <= 100,000),每条命令形如:"10 L":向左移动10个单位,"15 R":向右移动15个单位。对于给定的命令序列,农民约翰想知道,多少个单位长度的栅栏至少被刷了K次油漆。贝西最多会离开开始位置1,000,000,000个单位。
【文件输入】
第一行,两个整数N和K。
接下来2到N+1行,描述N条命令
【文件输出】
一个整数,表示被至少刷K次的栅栏的数量。
【输入样例】
6 2
2 R
6 L
1 R
8 L
1 R
2 R
【输出样例】
6
【样例说明】
6个单位长度的栅栏至少被刷2次油漆,分别是[-11,-8], [-4,-3],[0,2].
3. 奶牛排队{ Gold题1}
【问题描述】
农夫约翰的N(1 <= N <= 100,000)只奶牛排成了一队,每只牛都用编上了一个“血统编号”,该编号为范围0...1,000,000,000的整数。血统相同的奶牛有相同的编号,也就是可能有多头奶牛是相同的"血统编号"。
约翰觉得如果连续排列的一段奶牛有相同的血统编号的话,奶牛们看起来会更具有威猛。为了创造这样的连续段,约翰最多能选出k种血统的奶牛,并把他们全部从队列中赶走。
请帮助约翰计算这样做能得到的由相同血统编号的牛构成的连续段的长度最大是多少?
【文件输入】
第一行,两个空格间隔的整数N和K 。
接下来N行, 每行一个整数,表示对应奶牛的血统编号。
【文件输出】
一行,一个整数,表示所能得到的最大连续段的长度
【输入样例】
9 1
2
7
3
7
7
3
7
5
7
【输出样例】
4
【样例说明】
样例说明,只能删除一种奶牛,删除3号血统的奶牛可得到2777757,其中最长的一段连续数字是4个7。