CF1103 部分题解

链接

究极下饭,赛时做出 AB,B 死活想不出来一个多小时才 AC

A

直接给横着的分一半,竖着的分一半,然后 xjb 填就行了

B

考虑先问出这个数的最高位。

当满足 \(x<a\) 时,若 \(2x \% a>x \% a\),那么有 \(2x < a\),否则 \(2x>a\)

然后确定最高位以后逐位确定即可,具体地,每次问 \(ans-1\)\(ans+2^i-1\)

C

有关图的构造,一般要想到生成树;有关两个条件满足其一的,一般是在最坏情况下发现一些性质。

考虑一颗生成树,如果深度 \(\geq \frac{n}{k}\),那么直接输出,否则通过抽屉原理,可以保证叶子个数 \(>k\)

然后可以对于每个叶子都能找到一个不同的环。

因为是生成树,所以叶子多余的两个边一定是返祖的,并且这两个边可以保证至少有一个满足要求的环。

同时因为深度 \(\leq \frac{n}{k}\) ,所以总长度是 \(\leq n\) 的。

想到生成树的话思路还是很顺的。

D

逐步缩小数据范围的思想还是很震撼的。

质因子个数 \(m \leq 12\)

考虑把每个数只留下公因数的因子,然后把数相同的只留下代价最便宜的 \(m\) 个,不同的数个数 \(N \leq 12000\)

直接暴力复杂度 \(O(N3^mm^2)\),无法通过。

然后继续优化,考虑在枚举补集进行转移的时候,可能作为这个集合转移的也只有最便宜的 \(m\) 个,处理出这 \(m\) 个复杂度为 \(2^mN\)

最后转移的时候对于每个数只更新这个数被选中的转移,这样每种状态枚举子集的次数只有 \(m\) 次,复杂度 \(O(3^mm^2)\)

posted @ 2021-11-02 15:16  'Clovers'  阅读(64)  评论(0编辑  收藏  举报