1:筛一个数的质因子复杂度可以做到 O ( log 值 域 ) O(\log值域) O(log值域)
预处理f[i]表示i最小的质因子 这个可以 O ( N ) O(N) O(N)筛出来
每次至少会缩小一半范围 所以可以 O ( log 值 域 ) O(\log值域) O(log值域)
2:找一棵树上一些点与他们之间联通的边的连通块大小
把这些点按dfs序排序
相邻两点求他们之间的路径长度
开头与结尾也求一次
答案就是总长度除以2
3:二分图实际上就是一张不包含奇环的图
4:一棵树的连通块个数=点数-边数
5:对于某些形如1122233334…,前面的数总不会大于后面的数的数
考虑把贡献拆开
比如
11122233344
11111111111
—111111111
---------11111
--------------11
对于1,上例有11个大于等于他的数 所以他对于这个例子的贡献是 11....11 11....11 11....11(11个1)
对于2,上例有8个大于等于他的数 所以他对于这个例子的贡献是 11....11 11....11 11....11(8个1)
如此数位dp即可
6:设 p o p c n t ( x ) popcnt(x) popcnt(x)表示二进制下 x x x的 1 1 1的个数
p o p c n t ( x ⊕ b ) popcnt(x \oplus b) popcnt(x⊕b)是奇数当且仅当 p o p c n t ( x ) popcnt(x) popcnt(x)与 p o p c n t ( b ) popcnt(b) popcnt(b)奇偶性不同
因为要不在一起要不不在一起,在一起是0,不在一起是2。对奇偶性没有影响
7:搬一点我没什么印象的公式鸭…
约数和公式
( 1 + p 1 + p 1 2 + . . p 1 a 1 ) ( 1 + p 2 + p 2 2 + . . p 2 a 2 ) . . . ( 1 + p n + p n 2 + . . p n a n ) (1+p_1+p_1^2+..p_1^{a1})(1+p_2+p_2^2+..p_2^{a2})...(1+p_n+p_n^2+..p_n^{an}) (1+p1+p12+..p1a1)(1+p2+p22+..p2a2)...(1+pn+pn2+..pnan)
p是质因数 a是最高次幂
莫比乌斯函数的一个巧妙推论
∑ d ∣ n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] d∣n∑μ(d)=[n=1]
8:对于询问区间颜色是否出现的
可以通过一个思路:
记录每个颜色前一个相同颜色出现位置 p r e [ i ] pre[i] pre[i],可知 ( p r e [ i ] , i ) (pre[i],i) (pre[i],i)这段不可能再出现这种颜色
9:一类线性基修改问题
线性基不支持修改,但是可以用一个思想代替
当线性基中某一位的数是无可替代的时候,就可以直接删去,否则还要找其他数来替代它不可直接删除
然后就能考虑线段树分治之类的了
10:注意无向图的DFS树中只可能有返祖边而不会有横插边
11:对于权值互相匹配的题,我们可以考虑把两类权值放在一起排序然后维护最大合法括号序列
12:一类 m a x ( s [ j ] + s [ j ] ∧ s [ i ] ) max(s[j]+s[j]\land s[i]) max(s[j]+s[j]∧s[i])的问题
我们仍然贪心考虑 s [ j ] s[j] s[j]的取值,如果 s [ i ] s[i] s[i]当前位是1的话填0或者1贡献都是 2 i 2^i 2i,否则填1会获得 2 i + 1 2^{i+1} 2i+1的贡献
可以建出一棵Tire树,其中0的孩子中会并有1的孩子,1的孩子不变
或者考虑高维前缀和,类似bzoj5092
13:对于边权很小的最短路,可以考虑把边权拆成点
然后就可以跑BFS了
注意很多在dij中不能优化的方面在BFS方面是可以优化的
或者类似bzoj5097这样,动态维护距离当前连通块为1,2,3,4…的点集是什么
扫就可以了
思想大概还是在BFS的过程中每个点只会被访问一次
14:某种搜索中出现环的时候
可以考虑把步数压进状态里搜,就可以避免环了
15:Dilworth定理:DAG图的最小链覆盖=最长反链=最大独立集
一般是用来求最小链覆盖的!!!!!
看到DAG的覆盖计数要想到这个东西
16:在面对觉得原问题不可做求的答案又很奇奇妙妙的时候要想到把这个答案转化模型呀
譬如bzoj1566
17:能优化矩阵乘法的远远不止常系数线性齐次递推…
注意转移矩阵是循环矩阵的情况下,转移矩阵的自乘也是一个循环矩阵
所以只需要保存第一行的状态…可以变成 n 2 n^2 n2的
循环矩阵就是下一行固定是上一行移动某些列数
18:对于按一个点周围的点都会改变状态的
可以列异或方程求解
注意优化未知数个数和方程个数
19:二分图匹配的最小字典序匹配
保证邻接表访问顺序是从小到大的
然后从后往前匹配
这样的话如果没有增广路你匹配的就是最小的,否则我们可以让后面的变大一点点然后使得前面的最小
上面都是错的,是基于某个题有特殊性质的
正确的做法是先求出任意一个匹配,然后第二次扫
第二次扫的时候只改变编号在你后面的点的匹配,即前面的点的匹配强制不能改了
匹配的时候邻接表同样要求访问顺序从小到大
20:对最长公共子序列dp的时候要想到dp数组同一层的差值不超过1
所以可以对原dp数组差分后压入状态进行dp
21:我们写一下一个东西,竖行表示 f f f,横行表示 g g g
其中 g g g表示至少的
f f f表示只有的
注意到这是一个倒三角
中间的东西表示会被算几次
那么 后面的系数是可以从上一行推下来的
要记住容斥的这种推系数做法啊
22:几何最值优化的…一般要猜想在凸包上
譬如bzoj4570‘’
23:不仅仅有最小割=最大流
还可以把最小割换为最大流,然后转化为贪心问题
24:自然数幂和在式子中出现时可以把其的多项式往式子里代
25:好老的东西了…
最小割的必经边与可行边
先跑一次dinic,然后在残余网络上缩点。合法的边代表还存在流量的边
如果一条边在最大流中没有满流但是存在流量,其一定不是最小割
那么考虑一条边 ( u , v ) (u,v) (u,v)
如果 ( u , v ) (u,v) (u,v)在同一个scc中,其一定不属于最小割
否则,如果其满流了,其可能属于最小割
如果 u u u在 S S S所属的scc中, v v v在 T T T所属的scc中,其一定属于最小割
26:在一个 [ 0 , 1 ] [0,1] [0,1]的数轴上随机撒 i i i个点,求某个间隔长度的期望
抛出结论的话就是期望是 1 i + 1 \frac{1}{i+1} i+11
27:维护一个序列的线性基与维护其差分的线性基是等价的
28:一个点集/树的所有直径的中点是相同的,证明yy?
29:如果一个图无负环,则我们可以跑一个从1开始的最短路,对于最短路数组 p [ i ] p[i] p[i]有对于任意一条 ( u , v ) (u,v) (u,v)的边,均满足 p [ v ] ≥ p [ u ] + c u , v p[v]\ge p[u]+c_{u,v} p[v]≥p[u]+cu,v
30:交互优先想分治
*31:棋盘覆盖 d p dp dp,即每次你可以选一个矩阵操作,然后要求最后棋盘是某种颜色?
考虑 f [ i ] [ j ] [ k ] [ l ] f[i][j][k][l] f[i][j][k][l]的 d p dp dp,即 ( i , j ) (i,j) (i,j)和 ( k , l ) (k,l) (k,l)分别为左上和右下棋盘时的最少代价
转移即覆盖完或者在某一列/行切开来,两边的矩阵不超过这条分界线
别在这给我胡想 f [ i ] [ j ] f[i][j] f[i][j]表示 ( 1 , 1 ) (1,1) (1,1)和 ( i , j ) (i,j) (i,j)覆盖完了
32:首先能成为一个串的最小表示的起始位置一定是这个串的最小后缀的开头
其次能成为最小表示的最小后缀不超过 log n \log n logn个
第一个结论很显然,现在考虑证明第二个
考虑两个相邻的最小后缀,不妨设其为 i , j i,j i,j且满足 ∣ i ∣ < ∣ j ∣ < 2 ∣ i ∣ |i|<|j|<2|i| ∣i∣<∣j∣<2∣i∣,那么画图可知 j j j可以表示 A . . . . . A B + C A.....AB+C A.....AB+C的形式, i i i则是 A . . . . A B A....AB A....AB的形式,其中 B B B是 A A A的严格前缀,并且满足 C C C的第一个字符就是 B B B在 A A A中对应的下一个字符,且 i i i的 A A A仅比 j j j的 A A A少 1 1 1个,则要满足 i i i是最小时需要满足串的第一个位置既小于 C C C的第一个字符也大于 C C C的第一个字符,得知不成立,故相邻的最小后缀长度至少增加一倍,故仅有 log n \log n logn个
33:竞赛图的一些性质
tarjan后一定是一条链,前面的点向后面的点连边
竞赛图一定存在至少一条哈密顿路径
竞赛图存在一条哈密顿回路当且仅当这个图tarjan后是一个单点
考虑如何计数竞赛图,不妨考虑枚举其缩点后拓扑序最小的点, 所有点都向其中的点连边剩余的边任意
一些关于哈密顿路径的题目可以参考射命丸文的笔记
34:注意暴力重构的思想
35:对于 y − x ≥ K y-x\ge K y−x≥K的情况,我们画一条 y = x + K y=x+K y=x+K的直线,那么合法的路径当且仅当他碰过了这条直线
考虑怎么计数这样的路径,我们对于第一次碰到 y = x + K y=x+K y=x+K的位置,将 ( 0 , 0 ) (0,0) (0,0)到他的路径翻转,那么原路径会与 ( − K , K ) (-K,K) (−K,K)到 ( n , m ) (n,m) (n,m)的一条路径一一对应
36:单位根反演可以用来造某个数的倍数的 E G F EGF EGF
暴力二项式展开什么的
具体有 u o j 450 uoj450 uoj450
37:由loj6039. 「雅礼集训 2017 Day5」珠宝的一类决策单调性优化 d p dp dp
可以看作一个套路的 d p dp dp优化题
值得注意的是 C C C很小,可以想到的是把 C C C相同的放在一起处理。于是可以用调和级数暴力做 d p dp dp的方式做出来一个 k 2 log k k^2\log k k2logk的做法然而并没有这档部分分…
仍然考虑优化这个 d p dp dp,设 f i , j f_{i,j} fi,j表示对于费用 ≤ i \leq i ≤i的物品花了 j j j元的最大价值,转移考虑对 m o d    i \mod i modi进行余数分类,显然分类后每类仅会互相转移。
转移方程可以写为 f i , j = m a x { f i − 1 , j − k w + v a l i , k } f_{i,j}=max\{f_{i-1,j-kw}+val_{i,k}\} fi,j=max{fi−1,j−kw+vali,k},显然我们取 v a l i val_{i} vali一定是从大往小取的
一个值得一提的结论就是如果转移函数的斜率是递减的话,那么在相同的余数内是有决策单调性的…
证明可以看这个https://www.cnblogs.com/ShichengXiao/p/9501386.html#autoid-9-0-2