比赛链接
这还是 CF 吗?这场有思维题吗?
A. Homework
按题意模拟即可。
提交记录
B. The Secret Number
所有 10k+1n 即为答案。
提交记录
C1. The Cunning Seller (easy version)
化成三进制,按题目给出的公式计算即可。
提交记录
C2. The Cunning Seller (hard version)
首先还是化为三进制。第 x 位上的数字 ax,表示取 3x 个西瓜的次数。
- 我们称一次操作为:将 ax 减少 1,将 ax−1 增加 3。
一次操作后,总购买次数增加了 2。
注意到进行操作后,总花费会变小,且 x 越大,总花费减小得越多。所以我们从高位向低位枚举,每次都贪心地,对当前位做尽可能多的操作。
提交记录
D. From 1 to Infinity
通过枚举位数,判断最终在哪个数字处截断。然后问题就变成了:求 0∼x 的所有数字的每一位的和。
枚举每一位 i(定义最右边为第 0 位),求出第 i 位上所有数字的和。将数字拆成三部分:第 i 位左边的部分 l、第 i 位 p、第 i 位右边的部分 r。
- 例如:12345,处理第 2 位时,拆成 l=12,p=3,r=14。
那么我们将 0∼x 划分成以下几段:(用 [x y z] 表示 x,y,z 三个整数拼接起来的结果。x,y,z 的位数分别与 l,p,r 相等)
- [0 0 0]∼[l−1 9 999…999]:和为 45×l×10i。
- [l 0 0]∼[l p−1 999…999]:和为 2p(p−1)×10i。
- [l p 0]∼[l p r]:和为 p×(r+1)。
把每一位的和都算出来,再加起来即可。
提交记录
E. Arithmetics Competition
将 a,b 从大到小排序,并对它们做前缀和。前缀和的结果记为 SAi、SBi。
那么题意可以转化为:已知 l,r,z,记 F(i)=SAi+SBz−i,求 maxl≤i≤rF(i)。
我们考虑 F(i) 到 F(i+1) 的增量:
Δi=F(i+1)−F(i)=SAi+1+SBz−i−1−SAi−SBz−i=ai+1−bz−i
因为 ai,bi 都是递减的,所以容易得到 Δi 是递减的。所以 F(i) 是凸的。
三分即可。
提交记录
F. Rada and the Chamomile Valley
边双联通缩点后,找到 1→n 的路径上的所有边,也就找到了原图上的必经边。
把所有必经边的两个端点都放在一个队列里,记录一下这条边的编号。然后 BFS 就做完了。
提交记录