Rank | Solved | A | B | C | D | E | F | G | H | I | J |
---|---|---|---|---|---|---|---|---|---|---|---|
219/801 | 3/10 | O | Ø | Ø | Ø | Ø | Ø | O | Ø | O | Ø |
O
: 当场通过
Ø
: 赛后通过
.
: 尚未通过
A digits 2
solved by viscaria
viscaria’s solution
把n头尾相连重复n个即可
upsolved by chelly
chelly’s solution
若要求最小,可以按照模n建图,跑最短路即可。也可以dp。
B generator 1
upsolved by viscaria
viscaria’s solution
10进制快速幂
C generator 2
upsolved by chelly
chelly’s solution
可以转化成求离散对数的问题。求an=c (mod p)a^n=c \ (mod \ p)an=c (mod p)的问题,可以设置一个MMM,将nnn写成n=xM−yn=xM-yn=xM−y的形式,于是就变成了axM=c×ay (mod p)a^{xM}=c\times a^y \ (mod \ p)axM=c×ay (mod p)。所以可以预处理所有的aya^yay,然后枚举所有的axMa^{xM}axM。时间复杂度是O(pM+M)O(\frac{p}{M}+M)O(Mp+M),显然M=pM=\sqrt pM=p的时候时间复杂度最低,为O(p)O(\sqrt p)O(p)。但是这个问题里有qqq组ccc,所以直接BSGS的时间复杂度是O(q×p)O(q \times \sqrt p)O(q×p),会TLE。
实际上我们可以预处理左边的axMa^{xM}axM,对于每组ccc,枚举右边的c×ayc \times a^yc×ay即可。这样时间复杂度是O(pM+qM)O(\frac{p}{M}+qM)O(Mp+qM)。所以当M=pqM=\sqrt{\frac{p}{q}}M=qp的时候取到最小复杂度,为O(pq)O(\sqrt{pq})O(pq)。
D generator 3
upsolved by chelly
chelly’s solution
注意到模数很小,所以循环节会很短,x和y的循环节分别是2e5范围。但是两维坐标的循环节可能会高达4e10。
实际上,对于每个y,我们只需要保留最小的x和最大的x即可。问题就变成了如何对于每个y,快速求出其对应的最小的x和最大的x。
我们可以先求出x和y的循环节,并把前面不在循环里的部分对齐。然后就可以按照lxl_xlx和lyl_yly按照剩余系进行分类。如果没有nnn的限制,显然对于一个yiy_iyi,就是求剩余系里的那些位置的最小值/最大值即可。现在有了nnn的限制,实际上就是求这个剩余系里按顺序的前kkk个中的最大/最小。直接RMQ即可。
E independent set 1
upsolved by chelly
chelly’s solution
状压DP
dp[S]表示S集合表示的子图的最大独立集大小,转移的时候枚举S的最高位1进行转移即可。可以从小到大递推求出每个数字最高位的1的位置。
时间复杂度O(2n)O(2^n)O(2n)。
F independent set 2
upsolved by chelly
chelly’s solution
等价于求补图的最大独立集,补图实际上是二分图。所以直接二分图匹配求最大独立集即可。
G subsequence 1
solved by viscaria
viscaria’s solution
H subsequence 2
upsolved by chelly
chelly’s solution
直接拓扑排序即可
I three points 1
solved by viscaria
viscaria’s solution
J three points 2
upsolved by chelly
chelly’s solution
考虑路径的交点OOO,那么OX,OY,OZOX,OY,OZOX,OY,OZ的长度分别都能算出来,然后树dpdpdp可以求出以每个点为OOO,最长的三个分叉。然后就是一个三维数点问题了。
Dirty Replay
- F题补题的时候WA了2发,原因是没有正确的输出二分图最大独立集的方案。
- J题补题的时候WA了几发,原因是有个地方忘记了排序