WC2020游记
这是蒟蒻第一次参加WC
开场看下三道题
T1暴力有不少分
T2好像提示原根
T3...什么鬼嘛,再见
先开感觉可做的T2
先考虑质数的情况,那么直接把每个数表示成原根的幂次
再和\(phi(p)\)取个\(gcd\)就可以建出个DAG
一条有向边\(a->b\)表示a能推出b
一个点可能被选择当且仅当所有能到达它的点都不被选择并且与它同余的至少选一个
随便\(O(n^2)\)统计入度算算就好了
再考虑\(p=q^k\)的情况
题目提示分\(a_i\)是q的倍数和不是q的倍数分类讨论
是q的倍数的就发现依然可以建图
直接按含q的次数建一个分层图,同层的一定不能相互到达,边一定从层数小的到层数大的
继续\(O(n^2)\)算下每个点的入度就好了
不是q的倍数的情况
突然想起原来徐老师说的原根存在定理\(p=q^k\)依然是有原根的
恰好可以表示出所有不是q的倍数的数
类似p是质数搞就好了
那么问题来了,求是原根的几次幂怎么搞
由于这里需要求的\(a_i\)一定和p互质,所以直接BSGS
最后原根怎么求啊,一时感到zb
突然想起只需要判断是否存在小于\(phi(p)\)的k使得\(g^k \equiv 1\)(\(mod\) \(p\))即可
这个用下徐老师讲的阶只需要枚举\(phi(p)\)的每个质因子计算是否可行即可
于是就是\(O(glog^2n)\)的,相信原根很小
所以总复杂度\(O(n^2+n\sqrt{p}+glog^2n)\)可过
写到11点搞完过了大样例但还是有点虚
去看T1
这40pts不是白送?
这个数据类型C怎么搞啊裂开了
发现答案每次最多变1
口胡了维护集合分界点的做法但感觉好难写细节好多
结果正解就是再套个树剖自闭了
最后看T3还有白送30pts?
我giao怎么早点不看啊,完了
想打10pts都没打完
考完问同机房的同学发现B场切
看了看UOJ群发现你群人均AK
感觉今年打铁了
upd:出分发现居然没挂分
40+100+0
而且居然金牌线130?
大佬们都睡觉去了吗
混到块Au
希望NOI至少混个Ag吧