24.8.6 Codeforces Round 964 (Div. 4) 记录文章

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×Ct0klen,又发现 ⌈ k 2 ⌉ ≤ l e n \lceil\frac{k}{2}\rceil\le len 2klen(因为1是区间的众数,所以大于等于区间长度的一半) 且 l e n ≤ t 1 len\le t_1 lent1。根据组合数 C \text{C} C 的定义又可得 l e n ≤ t 1 len\le t_1 lent1 k − l e n ≤ t 0 k-len\le t_0 klent0。联立上四式解得 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,kt0),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,kt0)min(k,t1)Ct1len×Ct0klen,组合数 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 lmid2,若面积为 ( 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 rmid1,否则 l ← m i d 1 , r ← m i d 2 l\leftarrow mid1,r\leftarrow mid2 lmid1,rmid2。至于为什么推一下就知道了

STANDINGS | SUBMISSIONS
AC Code:A | B | C | D | E | F | G1 | G2

排名2000左右,感觉这次比赛在 BC 上花的时间有点多,下次要看清题目少吃罚时。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值