USACO 2018.12月铜组Bronze竞赛真题(中文)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USACO2018D ECEMBER C ONTEST,B RONZE
P ROBLEM1.M IXING M ILK
农业,尤其是生产牛奶,是一个竞争激烈的行业。
Farmer John发现如果他不在牛奶生产工艺上有所创新,他的乳制品生意可能就会受到重创!
幸运的是,Farmer John想出了一个好主意。
他的三头获奖的乳牛,Bessie、Elsie和Mildred,各自产奶的口味有些许不同,他打算混合这三种牛奶调制出完美的口味。
为了混合这三种不同的牛奶,他拿来三个桶,其中分别装有三头奶牛所产的奶。
这些桶可能有不同的容积,也可能并没有完全装满。
然后他将桶1的牛奶倒入桶2,然后将桶2中的牛奶倒入桶3,然后将桶3中的牛奶倒入桶1,然后再将桶1的牛奶倒入桶2,如此周期性地操作,共计进行100次(所以第100次操作会是桶1倒入桶2)。
当Farmer John将桶$a$中的牛奶倒入桶$b$时,他会倒出尽可能多的牛奶,直到桶$a$被倒空或是桶$b$被倒满。
请告诉Farmer John当他倒了100次之后每个桶里将会有多少牛奶。
输入格式(文件名:mixmilk.in):
输入文件的第一行包含两个空格分隔的整数:第一个桶的容积$c_1$,以及第一个桶里的牛奶量$m_1$。
$c_1$和$m_1$均为正,并且不超过$10^9$。
第二和第三行类似地包含第二和第三个桶的容积和牛奶量。
输出格式(文件名:mixmilk.out):
输出三行,给出倒了100次之后每个桶里的牛奶量。
输入样例:
103
114
125
输出样例:
10
2
在这个例子中,每倒一次之后每个桶里的牛奶量如下:
初始状态:345
1.桶1->2:075
2.桶2->3:0012
3.桶3->1:1002
4.桶1->2:0102
5.桶2->3:0012
(之后最后三个状态循环出现……)
供题:Brian Dean
USACO2018D ECEMBER C ONTEST,B RONZE
P ROBLEM2.T HE B UCKET L IST
Farmer John正在考虑改变他给奶牛挤奶的时候分配牛奶桶的方式。
他认为这最终能使得他使用数量更少的桶,然而他不清楚具体是多少。
请帮助他!
Farmer John有$N$头奶牛($1\leq N\leq100$),方便起见编号为$1\ldots N$。
第$i$头奶牛需要从时间$s_i$到时间$t_i$之间挤奶,并且挤奶过程中需要用到$b_i$个桶。
于是多头奶牛可能在同一时刻都在挤奶;如果这样,她们不能使用相同的桶。
也就是说,一个在第$i$头奶牛挤奶时用的桶不可以被任何在时间$s_i$到时间$t_i$之间挤奶的其他奶牛使用。
当然,这个桶在这段时间之外可以被其他奶牛所使用。
为了简化他的工作,FJ保证在任一时刻,至多只有一头奶牛开始或是结束挤奶(也就是说,所有的$s_i$和$t_i$各不相同)。
FJ有一个储藏室,里面有依次编号为1、2、3、……的桶。
在他的挤奶策略中,当某一头奶牛(比如说,奶牛$i$)开始挤奶(在时间$s_i$),FJ就跑到储藏室取出编号最小的$b_i$个桶分配给第$i$头奶牛用来挤奶。
请求出FJ需要在储藏室中存放多少个桶才能使得他能够顺利地给所有奶牛挤奶。
输入格式(文件名:blist.in):
输入的第一行包含$N$。
以下$N$行,每行描述了一头奶牛,包含三个空格分隔的数$s_i$,$t_i$,和$b_i$。
其中$s_i$和$t_i$均为$1\ldots1000$之间的整数,$b_i$为$1\ldots
10$之间的整数。
输出格式(文件名:blist.out):
输出一个整数,为FJ需要的桶的数量。
输入样例:
3
4101
8133
262
输出样例:
4
在这个例子中,FJ 需要4个桶:他用桶1和桶2来给奶牛3挤奶(从时间2开始)。
他用桶3给奶牛1挤奶(从时间4开始)。
当奶牛2在时间8开始挤奶时,桶1和桶2可以再次利用,然而桶3不可以,所以他会使用桶1、桶2和桶4。
供题:Brian Dean
USACO2018D ECEMBER C ONTEST,B RONZE
P ROBLEM3.B ACK AND F ORTH
Farmer John有两个挤奶棚,每个挤奶棚里各有一个奶罐和一个装有$10$个各种尺寸的桶的储物柜。
他喜欢将在两个挤奶棚之间来回运送牛奶作为一种锻炼方式。
周一,Farmer John量了恰好$1000$加仑的牛奶放在第一个挤奶棚的奶罐里,又量了恰好$1000$加仑的牛奶放在第二个挤奶棚的奶罐里。
周二,他从第一个挤奶棚里取出一个桶,并装满牛奶,然后将牛奶运到第二个挤奶棚,并将牛奶倒进奶罐。
他把这个桶留在了第二个挤奶棚。
周三,他从第二个挤奶棚里取出一个桶(可能是周二留在这里的),并装满牛奶,然后将牛奶运到第一个挤奶棚,并将牛奶倒进奶罐。
他把这个桶留在了第一个挤奶棚。
周四,他从第一个挤奶棚里取出一个桶(可能是周三留在这里的),并装满牛奶,然后将牛奶运到第二个挤奶棚,并将牛奶倒进奶罐。
他把这个桶留在了第二个挤奶棚。
周五,他从第二个挤奶棚里取出一个桶(可能是周二或周四留在这里的),并装满牛奶,然后将牛奶运到第一个挤奶棚,并将牛奶倒进奶罐。
他把这个桶留在了第一个挤奶棚。
此时Farmer John测量了第一个挤奶棚的奶罐里的牛奶。
他总共可能得到多少种不同的读数?
输入格式(文件名:backforth.in):
输入的第一行包含$10$个整数,为第一个挤奶棚里初始的桶的容积。
输入的第二行也包含$10$个整数,为第二个挤奶棚里初始的桶的容积。
所有桶的容积均在$1\dots100$的范围内。
输出格式(文件名:backforth.out):
输出Farmer John在周五之后测量第一个挤奶棚里的奶罐的牛奶时可能得到的读数的数量。
输入样例:
1111111112
5555555555
输出样例:
5
在这个例子中,最后第一个挤奶棚的奶罐中的牛奶量总共有$5$种可能的结果:
$1000$:FJ可以在每次往返的时候都携带同一个桶,从而不会改变第一个挤奶棚的奶罐的牛奶量。
$1003$:FJ可以在周二运送$2$个单位,周三$5$个单位,周四$1$个单位,周五$1$个单位。
$1004$:FJ可以在周二运送$1$个单位,周三$5$个单位,周四$1$个单位,周五$1$个单位。
$1007$:FJ可以在周二运送$1$个单位,周三$5$个单位,周四$2$个单位,周五$5$个单位。
$1008$:FJ可以在周二运送$1$个单位,周三$5$个单位,周四$1$个单位,周五$5$个单位。
供题:Brian Dean。