「考试总结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}) 个数是它的倍数
提出来 (mu),然后发现有两个乘积就行了
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.) 记得补习决策单调性
既然在衡水第一中学拿着衡水第一中学的学籍,别让自己留遗憾