USACO 2014 US Open

一、题目概览

中文题目名称

牧场装饰

里程表

牛像展览

英文题目名称

decorate

odometer

fairphoto

可执行文件名

decorate

odometer

fairphoto

输入文件名

decorate.in

odometer.in

fairphoto.in

输出文件名

decorate.out

odometer.out

fairphoto.out

每个测试点时限

1秒

1秒

1秒

测试点数目

10

10

10

每个测试点分值

10

10

10

比较方式

全文比较

全文比较

全文比较

二、运行内存限制

运行内存上限

256 M

256 M

256 M

注:感谢老胡鼎力翻译。【错误会有的,语句也不是那么流畅……】

 

1. 牧场装饰{bronze3}

【问题描述】

农民约翰有N(1<= N<=50,000)牧场,分别编号为1... N。牧场由M(1<= M<=100,000)条双向道路连接。道路i连接两个不同的牧场牧场A_i(1<= A_I<= N)和牧场B_i(1<= B_i<= N)。同一对牧场之间可能有多条道路连接。

现对每个牧场摆放一块标有大写字母”F”或者”J”的广告牌进行装饰。两个有道路相连的牧场,必须摆放不同字母的广告牌。

“F”字母广告牌的价格要高于”J”字母的广告牌,所以约翰想最大化地使用”J”字母广告牌,请输出这个最大的数目,如果没有可行的摆放方案,则输出”-1”。

【文件输入】

第一行为两个整数N和M。

接下来2..M行,每行两个整数,描述M条双向道路。

【文件输出】

输出共一行,一个整数,表示”J”字母广告牌的最大数目,无解则输出”-1”。

【输入样例1】

4 4

1 2

2 3

3 4

4 1

【输出样例1】

2

【样例1说明】

牧场1和3,或者牧场2和4使用”J”字母广告牌。

 

2. 里程表{silver3}

【问题描述】

农民约翰的牛正开始一个美妙的旅程。牛车的里程表上显示一个整数表示里程,旅程开始时里程数为X(100 <= X <= 10^18),结束时里程数为Y(X <= Y <= 10^18)。每当里程表显示一个有趣的数时(包括起点和终点数),牛们会发出愉快的叫声。

对于一个里程数的每一位,如果有至少一半的数字时相同的,则这个里程数一个有趣的数。例如:3223和110是有趣的数,而97791 和 123则不是。

请计算,整个旅程中,牛们会发出多少吃愉快的叫声。

【文件输入】

共一行,两个用空格隔开是整数,表示X和Y。

【文件输出】

共一行,一个整数,表示牛叫的次数。

【输入样例1】

110 133

【输出样例1】

14

【样例1说明】

这14个有趣的数分别是:

110, 111, 112, 113, 114, 115, 116,

117, 118, 119, 121, 122, 131, 133。

3. 牛像展览{gold1}

【问题描述】

农民约翰的N(1 <= N <= 100,000)头牛正站排成一行拍照。第i头牛站在位置x_i(0..1,000,000,000的整数),每头牛用一个整数b_i(1..8的整数)表示它的品种。没有两头牛站在同一个位置。

农民约翰希望拍摄一个连续区间里的牛,以便参加展览。为了公平起见,他希望该区间内的各品种的牛的数量是相同的,同时至少包含K (K >= 2)个品种的牛,请计算满足条件的照片的最大长度,最大长度即为该区间的长度。

【文件输入】

第一行,两个用空格隔开的整数,分别表示N和K。

第2到第N+1行,每行两个整数,分别表示第i头牛的位置和品种。

【文件输出】

共一行,一个整数,表示照片的最大长度。如果无解则输出-1。

【输入样例1】

9 2

1 1

5 1

6 1

9 1

100 1

2 2

7 2

3 3

8 3

【输出样例1】

6

【样例1说明】

区间[2..8]包含3种牛(分别1,2,3号),数量都为2。

04-26 04:27