CF780G
做 ds 做傻了。
将落到木板上分裂的球称为一类球,直接穿过的称为二类球。
观察到对于一个木板,只关注有多少一类球落到它上面而不关心具体坐标。维护球所在坐标是不可行的。考虑维护木板,维护有多少一类球落到这个木板上。按照高度枚举所有木板,能得到某个坐标某个高度上新增出来的球。这些球作为一类球落到木板 \(i\) 的条件是 \(h_i<now\),\(u_i+s_i>=now\),并且 \(i\) 是该坐标上最高的满足条件的木板。乍一看很像一个偏序形式,但是我并不会维护。
考虑枚举木板的同时加入 \(u_i+s_i>now\) 的木板,在线段树上维护 set
代表覆盖区间坐标的所有 \((h_i,i)\),标记永久化维护,查询时单点查询即可。
注意取模!
代码。