• GDOI 2020 赛前反思


    • 照例是要开这篇博客的。

    今年稳一点混进省队是(应该)没有问题的吧,A队的话因为联赛挂了60分有点难度,就随缘吧,只要进了省队就好了。

    留个坑,做完最后四场模拟再来填注意事项。


    杂想:

    从初一玩到高一的4h4T 的GDOI终于成了历史,现在是全新的4.5h3T的统一省选,去年也去SH参加了十二省联考,但今年是CCF组织的或许又有些不同,不管题目如何,做好自己就行了。

    不知不觉间就成为了高二老年选手,离AFO也就这么一两月的时间,站到这里才觉得压力有点大,高一时侥幸拿了Ag,现在的政策下还有学上(不过谁也不知道明年会怎么样,jyb不在乎竞赛这么点人的利益的),对于那些没有拿过Ag、Au的OIer来说,压力也许更大吧。

    注意事项:

    • 文件夹、读入输出文件名

    • 空间限制,有没有CE(函数名冲突),看清编译指令

    • 仔细读题,发现暴力都拿不了分时,一定要看看是否是看错了;读完后最好算一算小样例。

    • 拍拍拍,而且不能完全信赖对拍,可以出小数据、特殊数据,暴力最好写多个(要写个最裸的)。

    • 卡思路上厕所,清醒一下

    • 30分钟注意,20分钟决策,10分钟必须停手。

    • 敬畏题目,不去想自己能切几题,尽力即可,不会就看部分分。


    算法复习目录:

    字符串:

    KMP、SAM:

    http://codeforces.com/contest/914/problem/F

    这一题复习了三个算法,血赚。

    就是类似NOI那题的分块,设阈值(M=sqrt 1e5)(>M)的串暴力KMP,小于的最多经过两个块,整块内的建SAM直接查,散块和块与块之间暴力KMP。

    当然更加简单的做法是bitset,即对每个字符存当前位置的bitset,把可能的起点and起来,求区间1的个数即可。

    • KMP :next从2开始,可能要把s[|s|+1]=-1(母串)之类的。

    • SAM : 写完后可以输出子串看看,但是dep赋错了可能看不出来,多测清空一定注意写个函数,全部清了最好。

    • bitset:求区间$[x,y]$1的个数可以(>>x)-(>>y),清空是reset()(可以开个空的赋过去也行),1的个数是count()。

    最小表示法:

    • 扫一扫,注意不匹配时(k=0)

    https://www.luogu.com.cn/record/34419524

    SA:

    https://www.luogu.com.cn/problem/P4094
    一题复习两个算法一个套路,血赚。
    肯定选后缀,试一试就会发现b的限制很难受,二分Ans之后,就相当于后缀在一个区间里,。
    然后常规的height、ST表、主席树即可。

    • SA : s[0]和s[1]赋成-1,cmp有越界风险,所以把暂存rank的数组的后一位赋成0。

    AC-Autonmation:

    https://loj.ac/submission/837516

    这题就是套了个矩阵乘法,因为一次可能+1或者+2,所以需要把存2n的dp状态,相应的转移矩阵就是2n2n的。

    • AC自动机 : 标记沿fail链传递。

    manacher:

    https://www.luogu.com.cn/problem/P4199

    这题是FFT后强行套了个manacher。

    • manacher 写上i-r[i]>0&&i+r[i]<=2*n+1会比较好。

    回文树:

    https://www.luogu.com.cn/problem/P5685

    用回文树做这题是真的败家;

    • 回文树:fa[q] = son[getfa(fa[p])][c];son[p][c] = q;不能写反。
    • 回文树: 除了0和1,其实儿子编号一定比父亲打(不同于SAM)

    exkmp:

    https://www.luogu.com.cn/problem/P5334

    神题。

    从做左往右枚举前缀,保留可能的后缀(即在lcp=小的一方的长度的最小的那些)。

    发现可能的还是有(O(n))的,但如果有(|j|<|i|<2*|j|),发现不管后续是什么,后缀(j)一定不会更优。

    于是优化到(O(log))个。

    每次判断谁更优可以预处理exkmp的next数组。

    • exkmp:自我匹配2的预处理,从3开始推,匹配其它是1的预处理,从2开始推。

    数论:

    excrt
    exlucas

    https://www.cnblogs.com/coldchair/p/13068338.html

    • excrt:该模的地方都要模,c2-c1可能是负数,要取回正,下面这个可能没问题,如果longlong级别要用黑科技乘。
    void merge() {
    	ll t = gcd(m1, m2);
    	m2 /= t;
    	if((c2 - c1) % t != 0) return;
    	ll a = inv(m1 / t % m2, m2) * ((c2 - c1) / t % m2 + m2) % m2;
    	c1 = a * m1 + c1;
    	m1 = m1 * m2;
    }
    
    • exlucas,可以卡常,就是那个地方是1或者-1,就不用快速幂了。

    cipolla
    扩展BSGS

    • cipolla:记式子即可。
    • 扩展BSGS:一开始要除gcd,记得中途退出的情况。之后记得要找最小的正整数解。
    • 多次剩余(模数质数):求出原根,再bsgs求指数,求个逆元即可。

    斯特林数

    • 第一类斯特林数可以考虑直接展开递推式分治NTT求,也可以用ln、exp求圆排列的EGF的几次方。

    • 第二类斯特林数:
      容斥式:(s[n][m]=frac{1}{m!}sum_{i=1}inom{m}{i}*(-1)^{m-i}*i^n)
      自然数幂拆下降幂:(n^m=sum_{i=1}^m inom{n}{i}*i!*s[m][i]=sum_{i=1}^m n^{i↓}*s[m][i])
      自然数幂拆上升幂:(n^m=sum_{i=1}^m n^{i↑}*s[m][i]*(-1)^{m-i})

    单位根反演
    ([k|j]=frac{1}{k}sum_{i=0}^{k-1} w_k^{ij})

    pollard-rho

    • pollard-rho:注意判质数那里不要随机出0为根,后面没有关系。

    斯特林反演
    矩阵树
    min_25
    类欧
    五边形数(记不得就打表找规律)

    数据结构:

    treap
    https://www.luogu.com.cn/record/34501298
    记一下自随机函数的参数。

    KD-tree

    其它:

    2-sat
    上下界网络(费用)流
    注意有源汇中,T->S中的流量才是实际流量,而费用的统计可以通过每条边费用流过流量+费用下界流量来算。

  • 相关阅读:
    mybatis入参错误:There is no getter for property named ‘status‘ in ‘class java.lang.Integer‘
    JAVA程序员面试笔试题(一)
    Java8新特性LocalDateTime获取周几
    linux常用命令记录 screen
    ubuntu 19.04 + lenovo-xiaoxin-I2000 触摸板右键单击无法使用
    华为交换路由常用命令
    centos7常用软件
    一般网络延迟高的原因
    华为防火墙进程&简单配置
    私网互联(本质是三层路由)
  • 原文地址:https://www.cnblogs.com/coldchair/p/13131793.html
Copyright © 2020-2023  润新知