HNOI2017影魔
阿新 • • 發佈:2018-01-27
init 位置 truct pan void fin node 左右 按順序
影魔
- 這麽簡單的方法盡然想不到,我是真的菜
- 對每個點,用單調棧的方式處理出他左右第一個比他大的數的位置,你可以把\(0\)和\(n+1\)設成\(inf\)。
- 顯然對於每對\(lef[i]\)和\(rig[i]\)都會做出\(p1\)的貢獻
- 每個\(lef[i]\)會對\(i+1\)到\(rig[i]-1\)做出\(p2\)貢獻
- 同理,每個\(rig[i]\)都會給\(lef[i]+1\)到\(i-1\)做出\(p2\)貢獻
- 用結構體存下來,按順序用線段樹將貢獻加入即可
統計貢獻,對於每個詢問\(l-r\)在掃到\(l-1\)時將這段區間減去,在掃到\(r\)時再將這段區間貢獻加上即可
// luogu-judger-enable-o2
HNOI2017影魔