CodeForces 1400分板刷(持续更新中~~~)

4 篇文章 0 订阅
2 篇文章 0 订阅

一、LR-remainders

LR-remainders

思路

按数组每个位置的被处理的先后顺序,从大到小排序,然后扫一遍数组,因为数组前面的是较后被处理的,所以可以从剩余一个元素向剩余更多元素逐个扩展,计算每次扩展的结果,注意要存在 s t a c k stack stack里面。

二、Anna and the Valentine’s Day Gift

Anna and the Valentine’s Day Gift

思路

A n n a Anna Anna的最优选择是,找后缀 0 0 0最多的翻转。
S a s h a Sasha Sasha的最优选择是,保护后缀 0 0 0多的元素。
所以就可以处理出每个元素的后缀 0 0 0个数,并且按照个数升序排序,从后往前遍历,因为 A n n a Anna Anna先手,所以只有奇数位置上的元素可以被 A n n a Anna Anna操作。

三、Find B

Find B

思路

因为 b i > 0 b_i>0 bi>0并且 c i ≥ 1 c_i\geq 1 ci1,这也就说明,我们可以尝试把所有大于 1 1 1 c i c_i ci的多于 1 1 1的那部分向着等于 1 1 1 c i c_i ci分配,看看在全部分配完成后, c i c_i ci中能否剩下原本的 1 1 1没有被改变即可。

四、XOR-distance

XOR-distance

思路

  • a 、 b a、b ab某一位相同时,异或操作没有任何影响,不做考虑,我们假设 a > b a>b a>b.
  • 当某一位不同时,第一位不同的保留不变,可以证明 a a a的这一位一定是 1 1 1 b b b一定是 0 0 0,我们设这一位代表的数为 2 k 2^k 2k,然后接下来所有的 b b b的位为 0 0 0的,都异或变为1, a a a同位置变为 0 0 0,因为这样的话,在减法处理的时候,这一位提供 − 2 i -2^i 2i的价值,也就是在使差减小,而且可以证明,即使后面使得 b b b上的每一位上都是 1 1 1,最终的差也不会负向增长,因为 2 k = 2 k − 1 + 2 k − 1 2^k=2^{k-1}+2^{k-1} 2k=2k1+2k1 2 k − 1 = 2 k − 2 + 2 k − 2 2^{k-1}=2^{k-2}+2^{k-2} 2k1=2k2+2k2,不难发现,即使后面所有的二的次幂加起来,也不会有 2 k 2^k 2k多,所以一定会是向最小值靠拢而且不会出现负增长的。

五、Everything Nim

Everything Nim

思路

观察到,当最小堆石头数量为1时,那么这个人只能全部拿走,当大于1时,这个人可以选择全部拿走或者拿走 x − 1 x-1 x1个,当选择拿走 x − 1 x-1 x1个时,可以保证自己操作完最后一次时使得全部的堆为空,这时是必胜的,所以问题就转化成了,看谁先手拿数量大于1的那一堆,谁就是必胜的。

六、Heavy Intervals

Heavy Intervals

思路

提供一个数学定理
∑ i = 1 n a i b i ≥ ∑ i = 1 n a i b j i ≥ ∑ i = 1 n a i b n − i + 1 \sum_{i=1}^na_ib_i\geq\sum_{i=1}^na_ib_{j_i}\geq \sum_{i=1}^na_ib_{n-i+1} i=1naibii=1naibjii=1naibni+1
通俗来讲就是

  • 对于两个有序序列,顺序之积之和大于等于乱序之积之和大于逆序之积之和(顺序逆序乱序是相对于这两个有序序列来说的)
  • 30
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Codeforces是指在Codeforces比赛预估自己在比赛结束后所能获得的数。这个数是考虑根据自己的表现和其他参赛者的表现来预估的。 Codeforces数是根据比赛的排名和成功解决问题的数量来计算的。在每场比赛结束后,每位参赛者会根据其在比赛的表现被配一个数。比赛排名越高的参赛者获得的数也越高,而解决更多问题的参赛者同样也能获得更多数。 Codeforces有两种方法:一种是通过比赛的实时排名来估计当前数,另一种是通过计算比赛已解决问题的数来估计最终的总。 对于第一种方法,我们可以在比赛过程观察自己在排名榜上的位置和其他参赛者的数。如果自己的排名越高,说明自己的数也会越高;如果其他人的数与自己相差较大,说明他们可能已经解决了更多的问题,因此可能获得更高的数。 对于第二种方法,我们可以根据已经解决的问题数量来估算总Codeforces的比赛系统会根据每个问题的难度和重要性配不同的数。因此,如果我们能成功解决更多的问题,我们也将获得更高的数。 总的来说,Codeforces是一个根据比赛的排名和解决问题的数量来估计自己数的过程。但是,由于每场比赛的题目和参赛人数不同,预估数可能有一定的不确定性。因此,我们建议在比赛过程持续观察排名榜和其他参赛者的情况,以及时作出调整和优化自己的策略。 ### 回答2: Codeforces是一个在线的编程竞赛平台,每个竞赛都有一定的难度,需要通过编写代码来解决各种算法和数据结构的问题。Codeforces的估指的是根据你在竞赛的表现得出的一个评。 在Codeforces竞赛,你会根据你的解题情况和提交的答案是否正确来获得数。每个问题都有一定的值,解决该问题可以获得该值的数。如果你的答案是正确的,你将获得该问题的数;如果你的答案是错误的,你将不会获得数。 Codeforces的估算法是基于Elo算法改进的。Elo算法是一种用于评估竞技选手水平的算法。该算法会根据你的表现和对手的水平来决定你的数变化。如果你击败了一个数比你高的选手,你的数可能会上升得更多;如果你输给一个数比你低的选手,你的数可能会下降得更多。 Codeforces的估也考虑了竞赛的参与人数。如果你在一个参与人数多的竞赛获得了好的成绩,你的数可能会得到进一步的提升。相反,如果你在一个参与人数少的竞赛获得了好的成绩,你的数可能会得到更少的提升。 总的来说,Codeforces的估是根据你的表现、对手的水平和竞赛的参与人数来计算的。通过持续参与竞赛并取得好的成绩,你的数将会逐渐提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值