ZROI 19.07.31 AB班ACM
写在前面:非常感谢cjc和djh两位神仙带我,非常感谢他们给了我一次躺赢的机会。
虽然我被硬点成了代码手,但我写的基本每次都有一堆罚时。然而djh爷全部1A,tql。
题目按照一血时间升序,大致符合难度顺序。
中国剩余定理板子。由于我太菜了忘记怎么crt写了,所以码了很长时间。
有个邪道做法,由于只有三个模数,且只有第三个很大。可以枚举答案是第三个模数的多少倍,只需枚举\(17\times 107\)次。
djh爷打了个表发现\(n\geq 14\)的时候,答案全都是\(500\)。
由于我zz所以读入用的int,然后RE了一发。
直接暴力,根号分治即可。
虽然\(250ms\)的时限看起来很不根号,然而你敢写就敢过……
感谢djh爷提供代码。
对于\(2n\)边形,我们可以先确定一个正\(n\)边形,然后每两个点之间找一个位置即可,根据圆周角定理,这些角一定都相等。
奇数的情况随便判一下就好。
我们挂了很长时间是因为没有意识到\(9\)边形里居然可以套一个\(6\)边形……我菜死了。
继续感谢djh爷提供代码,cjc爷提供思路,我负责给神仙递面包。
显然环内的每个元素都要分开,缩点求最长链即可。
没看见多组数据+输出忘记换行,被搞两次,mmp。
果然我写的代码一定有锅。
djh爷一眼看出是容斥,tql。
假设硬点了一个长度为\(k\)的前缀冲突了,剩下的随便选有\(26^{n-k}\),发现如果它的某个后缀也是原串的前缀就会算重。
然后发现就是个kmp,对\(next\)为\(0\)的前缀容斥即可。
一血这么晚很可能是题面太长了。
发现一个置换中,一个奇环走两步长度不变,一个偶环走两步会被拆成两个长度为一半的环。
所以一个置换合法的充要条件是所有偶环出现的次数为偶数。
所以数据范围明明能出到\(10^6\)的。
然后就因为语言选错成功CE了,POJnb。
这题到最后整整三页CE。
这题比赛的时候直接没开,反正到最后才\(2\)人过掉。
然后题面非常不显眼的地方写出了重量加入和删除都是递增的,所以一个原来非常复杂的数据结构就变成了简单的队列。
因为带删除\(01\)背包现在也没人会做,所以考虑分块。
每次维护最后一块截止到每个左端点的背包。
删除的时候如果把最后一块删完了,就把最后一块的右侧一直到当前右端点全都看做新的最后一块,重构一下。
新加入的元素单独维护,询问时用单调队列合并两段背包。
当然,我只会口胡不会写。
每个元素只会被加入一次,重构一次。操作一个元素的复杂度是\(O(mod)\),
后缀数组板子,对每个后缀前后各找一个与它最接近的别的串的后缀,它的贡献是lcp+1。
我们队最后\(50\min\)开的题,我写+调了\(45\min\)过掉了,感觉手在发抖。
感谢djh神仙提供hack数据,不然我就调不出来了qwq
这题纸质题面数据范围写错了导致没多少人做
线段树维护一堆标记,我们队没开。
顺便这题其实是最晚一血的,然而不知道为什么放到前面讲。
加和除法操作不会影响\(\max\),两种标记可以直接合并。
暴力维护标记会爆long long,可以维护\(\log\)个标记,因为再进行除法就等价于区间赋值了。
其实这里我已经不知道老师在说什么了
拿到了这题一血,很荣幸。
虽然都是两位神仙带着,我啥也没干。
感谢djh神仙写的ntt,我是真的写不动多项式。
大胆猜结论,发现满足条件的集合要么是个\(0\)开始的等差数列,要么是个\(0,a,b,a+b\)的四元组。
等差数列很好做,四元组可以转化成多项式卷积。
djh爷作为全队唯一会写ntt的神仙毅然接下了重担,然后一发AC,tql。
而且他的ntt跑\(5\times 10^5\)只花了\(10ms\),太神了orz