20191110noip2017day2

noip2017day2 100+70+30

T3 LG3960列队

思维

  1. (把一个区间挪到一个点前) (逆向) 转为(把一个点挪到区间后),把区间修改变为单点修改
  2. 不存储无用信息,例如本题中未访问的区间
  3. 观察发现每次变动有影响的点只有当前点,最后一行最后一列的点以及当前这一行的最后一个点,只考虑修改这些点

操作

  1. 线段树动态开点:一棵1..n+q的线段树,每次查询或修改时再展开,空间复杂度计算qlog(max(n,m)+q)2(每次改两棵树)
  2. 函数中用多个不同数组完成相同操作,可增加一维,并用now表示现在操作哪一个数组
  3. 或者用n+1棵splay,初始时每个点维护一个区间,当这个区间l..r中某个数x要修改时再把它拆成三块 l..x-1,x,x+1..r
posted @ 2019-11-12 18:20  kkzt  阅读(70)  评论(0)    收藏  举报