4.23本周做题总结

bzoj1001

比较裸的网络流,给结点标号建边,由于是双向边,所以必须将双向流量都初始化,另外dinic一定要加当前弧优化,否则很容易tle

bzoj 1003

一道dp,比较简单的想法是跑spfa,因为毕竟是最短路问题,但是中间可以改变线路,就需要DP来辅助决策

bzoj 1004

其实是一道裸的burnsides引理,但是有更简单的做法,就是组合数学。因为是选择,加上组合数之后,最后推出来一个比较简单的式子,直接费马小定理求逆元然后处理掉除法就很方便了

bzoj 1007

几何题,有点像半平面交,但是并不会。可以直接观察一下,逆时针排序之后扫描,如果交点在上面就不能要了,于是可以用栈来维护,依次扫描,不符合条件就弹出,跟凸包是一样的。

bzoj 1008

这题好水。。。很简单的乘法原理,因为要求选择的相邻的数不能相同,所以第一个任意选,但是第二个就就只能在剩下的中间选,但是注意到与第一次选择的一定是不同的,所以后面的和这次的方案数其实是一样的,直接用快速幂就可以处理。

bzoj 1011

这题可以有很小的一个误差,而且因为只受到遥远行星的干扰,所以可以预处理分母,然后枚举行星位置来做。很奇怪的做法。

bzoj 1013

无论是几维的球体,其显著特征就是点到球心的距离都是相等的,然后就是一堆方程组了,注意需要预处理一下,然后高斯消元解方程组

bzoj 1054

BFS,需要记录状态,显然状压可以,但是更方便的是直接用HASH来储存,搜索状态直接入队即可。

洛谷月赛R2t1

数学题,都是打表找规律做的。。。后来自己推了推,貌似可以简单地证明一下,如果是因数,取mod时候就会去掉,所以要先处理出因数的和,可以$O(nlogn)$处理出来,然后就是递推了。

总结一下数学题的经验吧,数学题真是不能往一个方向死推啊,看到个$f(x)$就开始推莫比乌斯反演或者欧拉函数了,其实可以往别的方向想一想。

COGS 2192

约瑟夫问题的改进版,一开始理解错了题意。其实是一个简单地模拟,但是需要推出来每次那些人会被干掉。

Codeforces286E

还是ST带我领略了这题啊。
确实是好题。首先组合问题显然不属于组合数学的范围了,因为限制因素太多,考虑用母函数。但是由于可以多次选举,多次求多项式乘积FFT也处理不了,但是根据题意,无论相加多少次,应该也已经在之前给出的集合里面了,所以只需要平方即可。

物品

二分答案,每次预处理出来在哪个时间点分裂,枚举可能的情况最后判断,注意当满足时范围要左移,所以必须写左开右闭,答案是最后的右区间。