其他分享
首页 > 其他分享> > atcoder regular contest 114

atcoder regular contest 114

作者:互联网

做了四个题,ABCE。BC比较简单就不说了。主要说一下ADEF。

A - Not coprime

题目叙述

给 \(n\) 个数,要找出最小数使得每个数都和这个数不互质。
数的大小 \(\le 50\)。

题解

一开始想网络流什么的去了。
实际上直接 \(2^{c}\)(其中 \(c\) 为 \(\le 50\) 的质数个数),枚举质数集合就可以了。
属于是某种暴力剪枝了。

理想中的道路

应该最开始思考一下能不能就地展开。看看有没有除了网络流之外的其他方法。

D - Moving Pieces on Line

题目叙述

有 \(n\) 个人,每个人最初位置为 \(a_i\) ,一个人走过一条边会使得这条边的颜色取反。
问使得最终每条边的颜色为 010101010 这样的序列的最小代价。这个序列的端点会被给出

题解

考虑差分一下这个问题。首先一个人影响的一定是一个连续段。对前缀和的影响其实就是两个端点 \(^1\) 。
其次考虑最终要求的状态是什么。其实就是每个01交错处都有一个 1 。
如果设第 \(i\) 个人起点 \(a_i\) 终点 \(b_i\) 。只要 \(a_i\) 与 \(b_i\) 组成的集合进行 xor 就可以得到最终的集合就可以了。所以其实就是 \(a_i\) 和要求组成的集合进行匹配,或者 \(a_i\),最小距离和就是最终的答案。
很明显 \(a_i\) 自己和自己匹配的方式一定不会相交。
做法就很明显了 \(f_{i,j}\) 表示 \(a\) 的第 \(i\) 个数还没有决定,\(b\) 的第 \(j\) 个数还没有决定。此时的最小代价。每次转移要么 \(i\) 加二,要么 \(i,j\) 都加一。

反思

E - Paper Cutting 2

题目叙述

一张网格纸,有两个格子是黑色的。每次可以切一刀(必须沿格线并且必须将纸分为两个部分),问期望多少次两个格子会分开。

题解

一共有上下左右和中间这四种刀。考虑期望线性性拆分贡献,问题转化为考虑第 \(i\) 刀有多少的概率会切到。
首先不能在中间那些刀切到之后,其次不能先在那个方向上离中心更近的地方切。
所以贡献就是 \(\frac{1}{i+x}\) ,其中 \(x\) 是中间的刀数。

F - Permutation Division

题目叙述

你现在要给一个排列切若干刀,Maroon 会给这些段重新排列。你要最小化字典序,他要最大化字典序。问最终是什么样子。

题解

标签:atcoder,题目,题解,个数,最小,114,regular,集合,叙述
来源: https://www.cnblogs.com/YouthRhythms/p/16419785.html