SDOI2015做题记录
由于我懒,并且这里面除了D2T3恶心以外都不难写,所以很多代码都没写……
排序
对于某一个合法的操作序列(操作序列定义为每次交换的两组数),可以随意交换顺序,仍然合法。所以对于一个操作集合,答案就加\(|S|!\)。
从小往大考虑,要么不变,要么枚举变哪两个位置。变完之后显然可以相邻两个缩在一起。
变的位置必须合法,只有1或2种情况。
寻宝游戏
就是求虚树大小,set维护。
序列统计
用原根化乘为加,然后倍增做背包,用NTT优化。
星际战争
二分答案\(t\),然后考虑如何判断合法。
想到网络流:连边\((S,i,t\times B_i),(i,j+m,+\infty),(j+m,T,A_i)\),看是否满流。
(日常想不到网络流……)
约数个数和
有一个式子:
\[d(i\times j)=\sum_{x|i}\sum_{y|j} [\gcd(x,y)=1]
\]
为什么?考虑一个合法的因数,钦定它的质因子能在\(i\)里面拿就在\(i\)里面拿,否则在\(j\)里面拿掉剩下的。这个式子就相当于枚举在\(i\)里面拿的(不包括还需在\(j\)里面拿的质因子)和在\(j\)里面拿的,所以要互质。
然后这题随便推推就没了。
道路修建
看到区间修改,大概可以想到线段树?
考虑如何合并两个区间。你发现对于某一个区间,只能有两边的点不与其他点连通,所以合法的情况并不多。
于是分类讨论一下,合并的方式也不多,就十几种……
然后就没了,可以看 https://www.cnblogs.com/maijing/p/4832745.html ,因为我既不想画图也不想写代码。