orz G_keng 给的题!
辣鸡(ljh)
对矩形排序,不难证明交线数量是 (O(n)) 数量级的
那么每次 (lower_bound) 找有交线的矩形维护即可
以下均为考后刷题
模板(ac)
线段树按照 时间 开,存颜色和数量,统计的时候
这样子最后统计的时候就直接在树的前 (k_i) 个点算就行
修改对着当前点改就行了
1.怎么修改的时候判重
整个线段树合并做,然后维护最早出现时间
2.修改的时间也要改
跟着上面的做就行了
复兴了线段树合并
超级树
设 (f_{i,j}) 为 (i) 级超级树,(j) 条路径互不相交的方案数,这里的路径如果方向不一样也算不同的方案,比如 (1 o 2 eq 2 o 1)
转移分为以下:
((1) f_{i+1,j+k}+=f_{i,j} imes f_{i,k}) 从左边选择 (j) 条,右边选择 (k) 条,不进行更新
((2) f_{i+1,j+k-1}+=f_{i,j} imes f_{i,k} imes 2 imes j imes k) 合并路径
((3) f_{i+1,j+k}+=f_{i,j} imes f_{i,k} imes 2 imes(j+k)) 起点或者终点连到根上面
因为想咋走就可以随便从上面走下来或者走上去
((4) f_{i+1,k+j-1}+=f_{i,j} imes f_{i,k} imes (j imes (j-1)+(k-1) imes k)) 直接在子树里面走
$(5) f_ {i+1,j+k+1}+=f_{i,j} imes f_{i,k} $ 添加多出来的根节点
这个部分真的很容易漏掉!!
计数注意:增量的添加
初始状态 (f_{1,0}=f_{1,1}=1,ans=f_{n,1})
一些卡常:
减半优化,最值优化
(C++11) 优化,(O2) 优化
这题目中 (k) 很小,那么可以考虑分段取模,比如 (modge 4e5) 和 (modle 4e5) 两种情况