Amadeus训练实录

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

2018:

  • AHCPC:Gold/3

  • CCPC吉林:Silver/54

  • CCPC秦皇岛:Silver/53

  • ICPC南京:Bronze/110

  • ICPC焦作:Silver/69

  • EC-FINAL:Silver/100

That's all.
Thank for ABERROR feynman1999 LOSER_EVER Chelly and every people in AHU-ACM/ICPC Lab.


To do List:


总结:

  • 若一个式子长这样——$sum_{i}sum_{j}inom{n}{i}inom{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 \% phi(p)+phi(p) } \% p (xgeqslant phi(p)))
  • 看见(a(n))(a(n/2))关系的递推式,要想到二进制
  • 形如(x^2-dy^2=1(d是正整数且不是完全平方数))的不定方程叫pell方程,设其有一组特殊最小正整数解((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-dy^2=-1(d是正整数且不是完全平方数)),可能有解可能有无数解,解为(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-dy^2=k^2),等价于((frac{x}{k}) ^ 2 - d (frac{y}{k}) ^2 = 1)
  • 若b能整除a,则(frac{a}{b} \% mod = frac{a \% (b imes mod)}{b})
  • 当用cdq分治+FFT处理递推卷积的时候,若形式是(f(n)=sum f(i) imes f(n-i)),那么在处理(cdq(l,r))的时候,将(A=(f_l,f_{l+1},...,f_{mid})与B=(f_1,f_2,...,f_{r-l}))卷积的时候,要注意对于B中的(f_i),若(i<l or i>mid),系数要乘2。
  • 要求字典序最小的问题一般都能贪心逐位确定。
  • ((x+1)^{kdownarrow}=x^{kdownarrow}+kx^{(k-1)downarrow}),(x^k=sum_{i=0}^k x^{idownarrow}S(k,i))
  • 对于任何数x,(x^{0 downarrow}=1)
  • 无向图Matrix-Tree定理:求无向图G的生成树个数。设(D)是图G的度数矩阵((D(i,i))表示第i个点的度数,其它位置是0),设(A)是图G的邻接矩阵((A(i,i)=0)(A(i,j))表示i和j之间的边数),基尔霍夫矩阵(Q=D-A),则对于(Q)的任意一个代数余子式(Q')(det(Q'))的值就是图G的生成树个数。
  • 有向图Matrix-Tree定理:求以某个点为根的树形图个数。(D、A、Q)的定义同无向图的,对于点(w),设(t_w(G))表示以w为根的树形图的个数,(Q_w)表示矩阵Q第w行对应的代数余子式,那么(t_w(G)=det(Q_w))
  • BEST theorem:求欧拉图中欧拉回路的个数。(ec(G)=t_w(G) imes prod_{vin V} (deg(v)-1)!),其中(deg(v))表示点v的入度,(w)的选取是任意的,因为容易发现对于欧拉图,所有点的(t_i(G))的值都相同。
  • $inom{n}{a} imes inom{a}{x} $ 不等于 (inom{n}{x})
  • 模2意义下的多项式降幂:(f(x)^2=f(x^2) (mod 2))
  • (mu(n)^2=sum_{d^2|n} mu(d))
  • (phi _n(x))表示n次单位根下的分圆多项式,那么有(x^n-1=prod_{d|n} phi _d(x)),可以用来对于(x^n-1)的因式分解。分圆多项式可以通过莫比乌斯反演求得,即(phi _n(x)=prod_{d|n}(x^d-1)^{mu(frac{n}{d})})。其中(phi _n(x))的最高次数正好是(phi(n)),也就是说具体的求的时候可以将其对(x^{phi(n)+1})取模,类似背包那种的dp。
  • 开根下取整可以用牛顿迭代的整除形式做,最终(k)(frac{n}{k})会收敛到相差<=1的数字。
  • 对偶规则:
  • 互补松弛性:在线性规划问题的最优解中,如果对应某一约束条件的对偶变量值为非零,则该约束条件取严格等式;反之,如果约束条件取严格不等式,则其对应的对偶变量也一定为零。
  • ([i mod 2 = 0 ])等价于(frac{(-1)^i+1^i}{2}),可以用来式子化简
  • 若需要求期望,并且不是在取模意义下,有时候需要dp求方案数和总权值和,但这个可能会很大,可以用long double来保存
  • 建好一个kdtree之后,若要在上面寻找一个已有点,注意一定要以矩形的形式查找,两边都要递归下去
  • 对于01图的最短路,可以采用双端队列,即如果当前扩展的边是0,就放队列开头,如果当前扩展的边是1,就放队列结尾,这样的话复杂度是线性的
  • 容斥原理也可以通过递推来理解,设(F(P))表示至少有P个位置不合法的方案数,(G(P))表示恰好有P个位置不合法的方案数,那么(G(P)=F(P)-G(P+1)),倒推一下,(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:排名]

原文地址:https://www.cnblogs.com/Amadeus/p/9255620.html