Corner Cat 训练实录

现场赛记录:[名称:奖项/排名]

2019:


To do List:


总结:

  • 若一个式子长这样——$\sum_{i}\sum_{j}\binom{n}{i}\binom{m}{j}… $,可以考虑枚举一维然后利用二项式定理化简另外一维,降低了一层复杂度
  • 一些数学猜公式题可以考虑归纳
  • 莫队的时候尤其要注意排序不要写错,写错了会出现莫名的WA和RE,不明白为什么(雾
  • 写斜率优化的时候,要注意维护的凸包是叉积严格<0或者>0,=0的时候一定要删掉,容易出现问题
  • 要尤其注意sort时候<的重载,写的不好会TLE
  • 随机点算图形期望的时候要先真·随机产生点,再把不在范围内的点剔除
  • 实数二分保留答案的那一边不要有eps(比如:l=mid,r=mid-eps或者l=mid+eps,r=mid)
  • 写凸包的时候注意<=0和>=0不能写反
  • 一个字符串s的循环周期并不一定是最小循环周期的倍数,如aaabcdaaa,6,7,8,9都是其循环周期
  • 指数降幂公式: a x % p = a x % ϕ ( p ) + ϕ ( p ) % p ( x ϕ ( p ) ) a^x \% p =a^{x \% \phi(p)+\phi(p) } \% p (x\geqslant \phi(p))
  • 看见 a ( n ) a(n) a ( n / 2 ) a(n/2) 关系的递推式,要想到二进制
  • 形如 x 2 d y 2 = 1 ( d ) x^2-dy^2=1(d是正整数且不是完全平方数) 的不定方程叫pell方程,设其有一组特殊最小正整数解 ( x 0 , y 0 ) (x_0,y_0) 则有$x_{n+1}=x_0x_n+dy_0y_n,y_{n+1}=y_0x_n+x_0y_n $ 以及 $ x_{n+2}=2x_0x_{n+1}-x_n,y_{n+2}=2x_0y_{n+1}-y_n $。
  • 对于 x 2 d y 2 = 1 ( d ) x^2-dy^2=-1(d是正整数且不是完全平方数) ,可能有解可能有无数解,解为 x n + 1 = ( x 0 2 + d y 0 2 ) x n + 2 d x 0 y 0 y n , y n + 1 = 2 x 0 y 0 x n + ( x 0 2 + d y 0 2 ) y n x_{n+1}=(x_0^2+dy_0^2)x_n+2dx_0y_0y_n,y_{n+1}=2x_0y_0x_n+(x_0^2+dy_0^2)y_n 。若d为素数且d=4k+1,则必定有解
  • 对于 x 2 d y 2 = k 2 x^2-dy^2=k^2 ,等价于 ( x k ) 2 d ( y k ) 2 = 1 (\frac{x}{k}) ^ 2 - d (\frac{y}{k}) ^2 = 1
  • 若b能整除a,则 a b % m o d = a % ( b × m o d ) b \frac{a}{b} \% mod = \frac{a \% (b \times mod)}{b}
  • 当用cdq分治+FFT处理递推卷积的时候,若形式是 f ( n ) = f ( i ) × f ( n i ) f(n)=\sum f(i) \times f(n-i) ,那么在处理 c d q ( l , r ) cdq(l,r) 的时候,将 A = ( f l , f l + 1 , . . . , f m i d ) B = ( f 1 , f 2 , . . . , f r l ) A=(f_l,f_{l+1},...,f_{mid})与B=(f_1,f_2,...,f_{r-l}) 卷积的时候,要注意对于B中的 f i f_i ,若 i &lt; l   o r   i &gt; m i d i&lt;l \ or \ i&gt;mid ,系数要乘2。
  • 要求字典序最小的问题一般都能贪心逐位确定。
  • ( x + 1 ) k = x k + k x ( k 1 ) (x+1)^{k\downarrow}=x^{k\downarrow}+kx^{(k-1)\downarrow} , x k = i = 0 k x i S ( k , i ) x^k=\sum_{i=0}^k x^{i\downarrow}S(k,i)
  • 对于任何数x, x 0 = 1 x^{0 \downarrow}=1
  • 无向图Matrix-Tree定理:求无向图G的生成树个数。设 D D 是图G的度数矩阵( D ( i , i ) D(i,i) 表示第i个点的度数,其它位置是0),设 A A 是图G的邻接矩阵( A ( i , i ) = 0 A(i,i)=0 A ( i , j ) A(i,j) 表示i和j之间的边数),基尔霍夫矩阵 Q = D A Q=D-A ,则对于 Q Q 的任意一个代数余子式 Q Q&#x27; d e t ( Q ) det(Q&#x27;) 的值就是图G的生成树个数。
  • 有向图Matrix-Tree定理:求以某个点为根的树形图个数。 D A Q D、A、Q 的定义同无向图的,对于点 w w ,设 t w ( G ) t_w(G) 表示以w为根的树形图的个数, Q w Q_w 表示矩阵Q第w行对应的代数余子式,那么 t w ( G ) = d e t ( Q w ) t_w(G)=det(Q_w)
  • BEST theorem:求欧拉图中欧拉回路的个数。 e c ( G ) = t w ( G ) × v V ( d e g ( v ) 1 ) ! ec(G)=t_w(G) \times \prod_{v\in V} (deg(v)-1)! ,其中 d e g ( v ) deg(v) 表示点v的入度, w w 的选取是任意的,因为容易发现对于欧拉图,所有点的 t i ( G ) t_i(G) 的值都相同。
  • $\binom{n}{a} \times \binom{a}{x} $ 不等于 ( n x ) \binom{n}{x}
  • 模2意义下的多项式降幂: f ( x ) 2 = f ( x 2 )   ( m o d   2 ) f(x)^2=f(x^2) \ (mod \ 2)
  • μ ( n ) 2 = d 2 n μ ( d ) \mu(n)^2=\sum_{d^2|n} \mu(d)
  • ϕ n ( x ) \phi _n(x) 表示n次单位根下的分圆多项式,那么有 x n 1 = d n ϕ d ( x ) x^n-1=\prod_{d|n} \phi _d(x) ,可以用来对于 x n 1 x^n-1 的因式分解。分圆多项式可以通过莫比乌斯反演求得,即 ϕ n ( x ) = d n ( x d 1 ) μ ( n d ) \phi _n(x)=\prod_{d|n}(x^d-1)^{\mu(\frac{n}{d})} 。其中 ϕ n ( x ) \phi _n(x) 的最高次数正好是 ϕ ( n ) \phi(n) ,也就是说具体的求的时候可以将其对 x ϕ ( n ) + 1 x^{\phi(n)+1} 取模,类似背包那种的dp。
  • 开根下取整可以用牛顿迭代的整除形式做,最终 k k n k \frac{n}{k} 会收敛到相差<=1的数字。
  • 对偶规则:
  • 互补松弛性:在线性规划问题的最优解中,如果对应某一约束条件的对偶变量值为非零,则该约束条件取严格等式;反之,如果约束条件取严格不等式,则其对应的对偶变量也一定为零。
  • [ i m o d &ThinSpace;&ThinSpace; 2 = 0 ] [i \mod 2 = 0 ] 等价于 ( 1 ) i + 1 i 2 \frac{(-1)^i+1^i}{2} ,可以用来式子化简
  • 若需要求期望,并且不是在取模意义下,有时候需要dp求方案数和总权值和,但这个可能会很大,可以用long double来保存
  • 建好一个kdtree之后,若要在上面寻找一个已有点,注意一定要以矩形的形式查找,两边都要递归下去
  • 对于01图的最短路,可以采用双端队列,即如果当前扩展的边是0,就放队列开头,如果当前扩展的边是1,就放队列结尾,这样的话复杂度是线性的
  • 容斥原理也可以通过递推来理解,设 F ( P ) F(P) 表示至少有P个位置不合法的方案数, G ( P ) G(P) 表示恰好有P个位置不合法的方案数,那么 G ( P ) = F ( P ) G ( P + 1 ) G(P)=F(P)-G(P+1) ,倒推一下, G ( 0 ) G(0) 就是答案
  • 若一个最优化安排问题有明显的时间段,有t时刻的储存到t+1时刻之类的限制,往往都可以建成网络流模型;若网络流时间复杂度过不去,可以考虑能否贪心,贪心的一种思路就是从前往后我尽可能地买,在后面决定这些卖不卖,留到最后还没卖出的就可以视作当时没有制造出来
  • 在考虑树上路径最优化问题的时候,可以考虑线头DP,在做线头DP的时候,先不考虑根节点k本身,先把它孩子子树合上来,然后再考虑从k点加线头进行转移,然后再考虑从k点封线头进行转移(可能会形成孤立点),然后给那些经过k点的方案加上k点的权值,有时候你还需要多开一个维度的状态表示是否经过了k点
  • 在做queue或者priority_queue的时候,若从中间return了,那么下次再执行算法的时候一定要清空队列!
  • 回滚莫队可以将一般莫队的删除操作变成撤销操作。按左端点所在块编号为第一关键字,右端点为第二关键字排序。对于左端点在同一个块里的询问我们统一处理:对于那些右端点也在块内的,我们直接暴力;对于那些右端点在块外的,一定是单增的,我们假设当前块的最右边是right,那么我们首先把右端点从上次的位置移到这次的位置(加入操作),然后把左端点从right移到当前询问的左端点,得到答案后,再把左端点移回right。(这是撤销操作,不是删除操作)

找规律题总结:

  • OEIS、BM、插值
  • 不少找规律的问题是前面几项或十几项没规律,从中间开始有规律
  • 对一个数列找规律的时候,可能可以将其拆分成两个序列的并,分别可以OEIS/BM

训练实录:[时间 名称:通过题数/总题数,Rank:排名]

猜你喜欢

转载自blog.csdn.net/wang_viscaria/article/details/91975775
cat