202111102021-11-10

T1T1

思路AKAKlong  longlong \; long 开爆空间

分组背包之后合并

T2T2

暴力5555

正解二分答案再套二分求解

T3T3

莫反??不会

T4T4

单调队列加二分求出某个WenhaoWenhao左右最近的比他高的袋鼠墙

再用树状数组之类的搞出前缀和,总时间复杂度O(nlogn)O(n \log n)

202111112021-11-11

T1T1

发现可以让前面的牌变化大,后面的牌变化小,这样就会是最优的

(当a<b<c<da<b<c<d时,ad+bc>ac+bdad+bc>ac+bd

可以O(n)O(n)排序,求出变化后的序列,再用O(nlogn)O(n \log n)匹配求答

T2T2

fi=fj[mex([i,j])==K]f_i=\sum f_j * [mex([i,j]) == K] 其中fif_i表示结尾为i的方案数和,KK为全局[1,n][1,n]mexmex

用双指针和桶维护fj\sum f_j,可以O(n)O(n)

T3T3

类似kruskalkruskal重构树的笛卡尔树,以点权从小到大构造树T1T1,从大到小构造树T2T2

对于一个点对(x,y)(x,y),如果T1T1xxyy祖先,T2T2yyxx祖先,那么对答案产生11的贡献

用树状数组(常数小),O(nlogn)O(n \log n)

T4T4

分类讨论,用类线段树优化dijkstradijkstra的方法解决特殊点到特殊点和一般点

一般点到特殊点和一般点就为一般点出边权

202111152021-11-15

T1T1

考场n2n^2求和为nn的连通块,没想到鸽巢,链式前向星还开小了

用前缀和++鸽巢线性找到连续一段的连通块

快读快输可以有效提升速度

T2T2

考虑答案总和是2n12^{n-1},当k>1k>1的时候,方案数一定1\le 1

T3T3

打的是2n2^n的暴力dfsdfs,居然拿了6060

正解是看性质,当kk为偶数,存在一个中心点使得所有点到它的距离为k/2k/2

kk为奇数,只能选择两个点,统计一下乘起来,再用点分治或长链剖分

T4T4

迷惑??????

202111162021-11-16

T1T1

奇偶函数转换,(一大堆看不懂的符号和定义),最后求gcdgcd

T2T2

矩阵快速幂优化概率dpdp转移

T3T3

数论题,知道对于一个数n=piain = \prod p_i ^ {a_i}pip_i为素数),有ans(n)=(ai+1)[pimod4==1]ans(n) = \prod (a_i + 1)*[p_i \mod 4 == 1]

可以暴力枚举pip_i,加高精度,求出答案

T4T4

bitset+bitset + 定期重构

202111172021-11-17

T1T1

结论题,设did_i表示第ii个点的度数,则答案为i=1ndidi+1\sum_{i=1}^{n} \frac{d_i}{d_i+1}

可以线性求逆元,快读可以有效加速(26ms26ms)

总复杂度为O(n)O(n)

T2T2:在线莫队我不会

T3T3:恶心构造调半天

T4T4

限制变为了⼀类中某个元素与另⼀类中某个元素同时选/不选,要付出代价。我们只需反转其中⼀类元素的选/不选即可。 现在我们只需建图后在⼆分图上跑最小割即可。由于每条边流量都为11 ,因此使⽤ DinicDinic 算法时间复杂度O(nn)O(n \sqrt{n})

202111182021-11-18

T1T1:用单调栈++二分,找出最长逆序对,覆盖区间

T2T2:整除分块,即i=1nni\sum_{i=1}^{n} \lfloor \frac{n}i{} \rfloor,可以转换成

l=r+1,r=nnll>n(rl+1)(nl)\sum_{l=r+1,r=\lfloor \frac{n}{\lfloor \frac{n}{l}\rfloor} \rfloor}^{l>n} (r-l+1)*(\lfloor \frac{n}{l} \rfloor)

T3T3dpdp前缀和优化

T4T4:离线分块双指针大恶心题