「考试总结2021-03-28」反演 A. 矩阵 B.覆盖 C.强壮

「考试总结2021-03-28」反演
A. 矩阵
B.覆盖
C.强壮

考虑枚举一个矩形表示斜率,同时钦定这个矩形的两个端点必须选

不难发现这个矩形对角线上的点的个数是 (gcd exttt{(长,宽)})

这个结论的证明考虑 (y=frac{h}w x)(xin [1,w]) 中有几个点满足 (yin{Interger})

上下消掉 (gcd(h.w)) 之后在 ([1,w]) 里面有 (w/frac{w}{gcd}) 个数是它的倍数

[ans=2sum_dinom{d-1}{k-2}sum_{n}^{lfloorfrac{N}d floor}(N-nd)sum_{gcd(n,m)=1}^{lfloorfrac{M}d floor}(M-md)+ exttt{点在一个直线上的方案} ]

提出来 (mu),然后发现有两个乘积就行了

[ans=2sum_dsum_{p|d}mu (frac{d}p) inom{p-1}{k-2}sum_{n}^{lfloorfrac Nd floor}(N-nd)sum_m^{lfloorfrac{M}d floor}(M-md) + exttt{点在一个直线上的方案} ]

B.覆盖

把区间按照右端点排序,从前往后扫,如果当前区间没有点,那么在右端点放一个

如是解决第一问,按照放点的位置,把这个段割成 (n) 个小段,每个段里面必然会有一个点

转移:相邻的两个点夹的一段区间,这段里面有一些询问的终点,在区间 (mid) 左侧的由上一个管,剩下的下一个管

具体就是 (f[i]=min{f[j]}+val(i,j)),同时得到这个 (val(i,j)) 满足决策四边形不等式

那么使用分治实现决策单调性的 (dp)

具体而言,已知当前 (dp[i][l o r]) 的决策点 (in [L,R]),找到其 (mid=frac{l+r}2) 的决策点然后两边递归即可

C.强壮

将原题中的限制修改为 ( exttt{in or out}),也就是相离或者包含

这个可以使用线段树或者单调栈进行简单处理,剩下的部分设 (dp_{i,j}) 表示处理到第 (i) 个点,这个点的有长度为 (j) 的右侧链

转移考虑枚举相邻的限制,合并右链长度,注意每次转移的时候先做一次当前的后缀和

(dfs) 实现 (dp) 就行了


反思

T2 简单贪心没写少20多,T3没有往区间dp方面想少小30

打趣说是自己不配做个普及选手,其实这种分没打上还是问题挺大的

发散思维多联想,抓紧时间,该努力的时候要努力,今日收获:

(1.) 考虑把限制转化成包含和相离,转化成树上再处理

(2.) (gcd) 的个数

(3.) 记得补习决策单调性

既然在衡水第一中学拿着衡水第一中学的学籍,别让自己留遗憾