这是本文档旧的修订版!
AC 6题,Rank 39th
主要还是思维问题,EG两题一直在xsy卡题的时候思考,还是没有想出来。另外以后看一道题要把内容共享给队友,节省看题时间
题目一定要及时看,比如B题H题看完没多久就做出来了,但是看得很晚,还好极限写出来了H。
要注意随时关注榜单,卡题的时候视情况去开一下其他的题。
要随时与队友进行沟通。
… by cmx
所有的圆都会过原点$O$,如果点$A, B, O$三点共圆,那么$OA, OB$的中垂线会相交于圆心。
于是求出所有点与原点连线的中垂线并两两求交点,最后统计交点个数,出现最多的点对应的圆上有最多的点。
需要注意的是,一个圆上如果有$n$个点,那么交点的个数为$\frac{n(n-1)}{2}$
复杂度为$O(n^2\log n)$
by MountVoom
水题,求出从$00:00:00$到两个时刻的秒数作差即可。
by MountVoom
求出矩阵,然后行列分别一次单调队列 就可以求出以$(i,j)$为左上角,$(i+K,j+K)$为右下角的正方形的最大值 求矩阵时可以利用gcd优化($(a,b)=(a+b,a)=(a,b+a)$),但我优化了炸内存,没有优化过了
by Hardict
线性基为$logN$个,那么$i>19$时$ans[i]=ans[i-2]$
而$i \leq 19$时利用异或卷积计算答案
by Hardict
好题,可惜没想出来。被数据范围迷惑,以为是分块问题,一开始还傻傻写了个超时方法。赛后看题解发现是bitset,才惊觉为什么一直没往这方面思考。
考虑bitset,对每个Ai求一个长度为m的bitset $S_i$,$S_i[j]=1$当且仅当$A_i\ge B_j$,这样我们发现只要通过下面的式子,就可以求出每个$cur_i$,$cur_i[j]$表示,A从i开始的一段和B从j开始到结尾,都是不小于的。
$$cur_i=(cur_{i+1}>>1|I_m)\&S_i$$
其中I_m是一个只有第m位为1的bitset。这样我们对于每个$cur_i$,求出$cur_i[0]$的和即可。
注意,这里有n个bitset,想要求出这些$S_i$效率似乎有问题,实际上,最多只有$m+1$种不同的bitset。我们排好序,可以求出这几种bitset,以及有哪些i是属于这个bitset。
因此效率为$O(nm/64)$
by cmx