A:
模拟,队友写的
B:
转化到十进制后暴力sqrt(n)判素数,不要问我为什么,后面都不是素数。。队友写的
D:
二分图最大权独立集
对于x^y为奇数的点i和点j,xi^yi^xj^yj为偶数,而p也为偶数,所以gcd至少为2,所以奇数点之间互不冲突
对于x^y为偶数的点同理
因此将互相冲突的点之间连边,可以得到一个二分图,做最大权独立集 == 总权和-最小割
E:
将每个球向他4个方向的最近点连边,那么答案就是连通块的个数,因为每个连通块总是有办法能够弹得只剩一个
对于一个连通块,必须保证在弹的过程不会使联通块增加,
要保证这个性质,只需要按照dfs序或bfs序,逆序删点即可。删的方向,设为dfs或bfs树中该点的父亲方向就可以了
恩,队友写的
F:
对于每一个点,把所有点按照该点以极角序排序,然后顺序枚举边,再去找凸包上直线左侧最远点,而这个满足凸性,因此可以从前一次找到的凸包上的点继续往前找,直到距离不增加为止。那么复杂度是O(n^2lgn)
H:
题意为求原图删掉最多K条边后的最大流的最小值
由最大流最小割定理,可以通过降低最小割的容量来减少最大流,因此就是把一个割集的最大K条边删掉以得到尽量小的割
因此2^n次枚举所有的割,维护删掉割集中K条最大边后的最小割,就是答案
I:
无脑平衡树
只需要敲啊敲啊敲就能AC了