CF1552 BCD

CF1552 BCD

比赛链接

B

由于最终获胜的运动员有且仅有一个,可以通过两两之间比较必有一人胜出得出

所以,如果有一个运动员可以击败其他所有运动员,那么将运动员编号 11 到编号 nn,顺次比较,每次只留下获胜的一个运动员,那么将最后剩下的一个运动员再和全部运动员比较一次,如果失败则无解,成功则得解。可以用反证法证明,中间运动员一定不是要求的解。

C

贪心

先考虑 44 个可以自由连接的节点,如果两条弦不相交,一定可以通过改变endpos来使得弦相交

考虑如果给你 2n2n 个自由连接节点,如何连接使得弦的交点数最多,让每次新增的弦和已有的弦都相交一遍是最优解,将这 2n2n 个节点编号为 02n0\cdots 2n,将节点 ii 和结点 i+ni+n 连接,即可达到要求

题目还先连接了一些节点,可以直接考虑剩下的 2(nk)2(n-k) 个自由节点的连接,按照上述方式连接弦即可

D

思维题,转换问题为图论问题,建立点与边的定义

如果允许写 n+1n+1bb 那么很容易的可以构造出来满足条件的序列 {bn}\{b_n\},令 b0=0,bi=bi1+aib_0=0,b_i=b_{i-1}+a_i,则 ai=bibi1a_i=b_i-b_{i-1},我们把每一个 bib_i 看做一个点,每一个 aia_i 看做一条连接 bi1b_{i-1}bib_i 的边,那么在上述构造中,bib_i 就构成了一条链。

现在,题目只给了 nnbb 那么肯定不能是链了,因为这样只有 n1n-1 条边不能满足 nnaa,所以一定会有一个环,而且只需要一个环,就能满足题目要求,问题转换为去找这样的一个环。

b1,b2,b3b_1,b_2,b_3 能形成一个环,那么从边上看就有 (b1b2)+(b2b3)+(b3b1)=0a1+a2+a3=0(b_1-b_2)+(b_2-b_3)+(b_3-b_1)=0\Rightarrow a_1+a_2+a_3=0,注意这里的 aia_i 是可以变号的,因为交换一下 bb 的顺序即可将 a-a 变为 aa,所以只需要找出这样一组 aa,使得它们之和为 00 即可。

可以用背包的方法来实现。


CF1552 BCD
https://wty-yy.github.io/posts/54761/
作者
wty
发布于
2021年7月28日
许可协议