其他分享
首页 > 其他分享> > AtCoder Beginner Contest 261 (C~F)

AtCoder Beginner Contest 261 (C~F)

作者:互联网

省流:A -2 然后 30min 过 ABCDEF 开始罚坐,看着自己 rank 一点一点掉下去一百多=_=

虽然 A -2 但是仍然懒得写 AB

ABC261C NewFolder(1)

依照题意开个 std::map<string,int> 模拟就行了。AC Code

ABC261D Flipping and Bonus

考虑 DP,设 \(f(i,j)\) 表示前 \(i\) 次掷骰子,并且最终分数为 \(j\) 的最大得分。

根据题意有两种决策,分别对应两种转移:

在转移的过程中计算分数即可。复杂度 \(O(N^2)\)。AC Code

ABC261E Many Operations

我们考虑拆位,对于第 \(i\) 位算出来最终是 \(0\) 还是 \(1\)。现在只需要考虑 \(X,A_i\in\{0,1\}\) 的情形。

可以发现,这些操作虽然不具有结合律,但最终操作带来的贡献可以等效为以下四种:

\(\text{xor}\) 的贡献相当于将目前的贡献在第 \(3,4\) 种之间互换,或者在第 \(1,2\) 种之间互换。

于是我们就处理出了操作序列的每个前缀等效的贡献。最后把每一位合并起来就行了。

时间复杂度 \(O(N\log V)\),其中 \(V=2^{30}\) 为值域。AC Code

ABC261F Sorting Color Balls

如果不管怎么交换都需要花费 \(1\) 的代价,那么我们知道答案就是逆序对个数。

这是因为每次交换至多减少一个逆序对,而有序的序列是不存在逆序对的。

现在同色交换不需要花费代价,那么大胆猜测答案就是总的逆序对个数减去同色的逆序对个数。

证明其实也很简单:考虑到每次交换至多减少一个逆序对,而交换同色时不需要花费任何代价,也就是说同色逆序对可以白嫖免费消掉,那么减去这部分贡献就显得非常自然。

使用树状数组求逆序对即可,复杂度 \(O(N\log N)\)。AC Code

标签:AtCoder,AC,Code,Beginner,text,原数,261,同色,逆序
来源: https://www.cnblogs.com/YunQianQwQ/p/abc261.html