by UESTC

A[G]

有n堆东西
每次操作可以将相邻两堆合并,或将一个拆为任意大小的两堆
问最少多少次操作使得所有堆的数量都一样

暴力

很显然最后每堆必定是有相邻的若干堆凑成的
只需要暴力扫一遍,不断合并,大小超过最后每堆的数量再拆分

B[J]

平面上有n个炸弹,每个炸弹有爆炸范围,以及引爆代价
可以连环爆炸,求最小代价引爆n个炸弹

强连通分量

建一张有向图,所有入度为0的点的引爆代价即为答案

C[J]

物理

D[JG]

定义 f(y,K) 为y每位数的K次方的和
给出x(1e9),K(9)
求满足 x = f(y,K) - y 的y的个数

搜索

我们可以忽略y数位的顺序进行dfs,最多只有 $C_{20}^{10}$ 种情况
然后再判断即可

F[J]

有一个长度为n(1<= n <= 20)的数
分为5段,在其中填上 + - * /
求一种分法的最大值

贪心

很明显要让a+b尽量大c*d/e尽量小

c d 只取一位,e最多取三位
a b 其中有一个取一位

K[J]

给出 n(1e9),s(1e9) , 有n个数 s+1,s+2,...s+n
先在将这n个数放位置1-n 上,要求每个位置上的数是这个位置的倍数
判断是否有一种放法满足

二分图匹配

由于素数必定会出现在其自身位置上(或1)
并且两个素数的间隔很小

所以我们取倒数第二个素数,判断其是否小于等于n,然后将倒数第一个素数放在1上
或者直接判断倒数第一个素数是否小于等于n

我们将n之后的数放在位置1(2)-s上,然后跑一个二分图匹配