24.8.6 Codeforces Round 964 (Div. 4)
代码放在最后
萌新第一次打CF,学校网卡的要死,开场几分钟卡爆了…
A.A+B Again?
一眼题,十几秒就打出来了,但是交不上去,00:03才过。
思路:对这个数分离数位,加起来即可
B.Card Game
分支结构水题,但是题目没理解透,吃了两发罚时,又加上 CF 评测慢,先去把 CD 开了,最后 00:41 才过 :(
思路:枚举每种情况判断即可
C.Showering
看到题目看错了,没有看到 l i , r i l_i,r_i li,ri 是时间点,看不懂样例,看懂后很快 00:26 就过了。
思路:对每一个区间的左端点进行排序,判断相邻两个区间长度是否够,最后在判断头尾时间是否够
D.Slavic’s Exam
贪心思路很简单,很快就做出来了,00:39 A了。
思路:贪心,如果这位不是问号且能匹配上就匹配,是问号就将问号改为一样的进行匹配。
E.Triple Operations
也是贪心,但是sb翻译软件出错了,告诉我 ⌊ ⌋ \lfloor\rfloor ⌊⌋ 不是下取整,而是四舍五入。想了大概几分钟想到了 贪心+数学 的思路,最后加了个前缀和优化就行了,01:09 过了。
思路:先将最小的数操作为,0,接下来再用0和其他数操作,次数一定最小。发现要求区间的对数和,用前缀和预处理即可。
F.Expected Median
感觉有点绕,在这道题上卡了比较久,想了大概十几分钟,想到了用排列组合的做法,但是推式子处理细节调了很久,最后加了个逆元快速求组合数就过了,01:54 A了。
思路:既然是子序列,那就相当于随便选0和1,记录下0和1的出现次数,记其分别为 t 0 , t 1 t_0,t_1 t0,t1,再枚举选择子序列中1的出现次数,设其为 l e n len len,子出现次数为 l e n len len 的子序列对答案的贡献就为 C t 1 l e n × C t 0 k − l e n \text{C}_{t_1}^{len}\times \text{C}_{t_0}^{k-len} Ct1len×Ct0k−len,又发现 ⌈ k 2 ⌉ ≤ l e n \lceil\frac{k}{2}\rceil\le len ⌈2k⌉≤len(因为1是区间的众数,所以大于等于区间长度的一半) 且 l e n ≤ t 1 len\le t_1 len≤t1。根据组合数 C \text{C} C 的定义又可得 l e n ≤ t 1 len\le t_1 len≤t1 且 k − l e n ≤ t 0 k-len\le t_0 k−len≤t0。联立上四式解得 l e n ∈ [ m a x ( ⌈ k 2 ⌉ , k − t 0 ) , m i n ( k , t 1 ) ] len\in[max(\lceil\frac{k}{2}\rceil,k-t_0),min(k,t_1)] len∈[max(⌈2k⌉,k−t0),min(k,t1)]。最后对任意的 l e n len len 求个和就行了,答案即为 ∑ l e n = m a x ( ⌈ k 2 ⌉ , k − t 0 ) m i n ( k , t 1 ) C t 1 l e n × C t 0 k − l e n \sum_{len=max(\lceil\frac{k}{2}\rceil,k-t_0)}^{min(k,t_1)}\text{C}_{t_1}^{len}\times \text{C}_{t_0}^{k-len} ∑len=max(⌈2k⌉,k−t0)min(k,t1)Ct1len×Ct0k−len,组合数 C \text{C} C 可以用逆元求。
G1.Ruler (easy version)
第一次在比赛中遇到交互题,但是最后一点时间感觉做不动了,但还是要去想一下,最后想出来可以用二分,交上去 02:17 A了。
思路:看到 ⌈ log 2 1000 ⌉ = 10 \lceil\log_21000\rceil=10 ⌈log21000⌉=10,自然想到二分,每次提问一个 m i d mid mid,若返回的面积为 ( m i d + 1 ) 2 (mid+1)^2 (mid+1)2,则缩小范围往下找,反之向上。
G2.Ruler (hard version)
最后一点时间还是把 G2 开了,很快发现 ⌈ log 3 1000 ⌉ = 7 \lceil\log_31000\rceil=7 ⌈log31000⌉=7,往三分上面想,还真想出来了,但是没有时间敲了(
赛后思路:还是看到 ⌈ log 3 1000 ⌉ = 7 \lceil\log_31000\rceil=7 ⌈log31000⌉=7,考虑三分,设 m i d 1 , m i d 2 mid1,mid2 mid1,mid2 分别为三分的两个三等分点,询问测量 m i d 1 , m i d 2 mid1,mid2 mid1,mid2 的面积 S \text{S} S,若面积 S = m i d 1 × m i 2 \text{S}=mid1\times mi2 S=mid1×mi2,则 l ← m i d 2 l\leftarrow mid2 l←mid2,若面积为 ( m i d 1 + 1 ) × ( m i d 2 + 1 ) (mid1+1)\times(mid2+1) (mid1+1)×(mid2+1),则 r ← m i d 1 r\leftarrow mid1 r←mid1,否则 l ← m i d 1 , r ← m i d 2 l\leftarrow mid1,r\leftarrow mid2 l←mid1,r←mid2。至于为什么推一下就知道了
STANDINGS | SUBMISSIONS
AC Code:A | B | C | D | E | F | G1 | G2
排名2000左右,感觉这次比赛在 BC 上花的时间有点多,下次要看清题目少吃罚时。