20210705模拟赛总结

比前几天的模拟赛都要简单qwq

T1

有一个小技巧,形如 dp[i][j] = dp[i-1][j] + dp[i][j-1] 的式子里,(1,1) 到 (n,m) 的贡献相当于从 (1,1) 走到 (n,m) 的方案数。这样对于两段区间的合并,可以看做左半部分的矩形走到右半部分,可以 \(k^2\) 的转移出来。

然后就简简单单的线段树即可解决。

T2

发现如果可以处理出每一个木板两端会掉到哪个木板停下来就好了。发现从 u[i] 掉下的球要停在 j 需要满足 \(u[i] > u[j] + s[j]\) ,我们从下往上枚举 i ,使得 u[i] 递增。使用线段树查询 l[i]-1,r[i]+1 下面最先被哪个接住,在线段树节点上维护 u[j]+s[j] 的单调栈即可。

T3

考虑以点 A 为参考系,可以发现 B 的运动轨迹是一条折线。我们二分答案 r,有 \(dist(A_x,B_{x+r}) \leq r\) 的时候有解,也就是转换参考系后折线与原点的最小值 \(\leq r\) 的时候有解。

posted @ 2021-07-05 19:37  nao-nao  阅读(38)  评论(0编辑  收藏  举报