[COGS 755]山海经:线段树
网上似乎这道题的题解很少?写一个吧 我跟这道题的渊源追溯到了上个学期刚刚学线段树的那一天。。。 当时线段树专题前边的题都是一些板子就不一会就水过了,然后就看到了最后一题的它:山海经 那一个上午,我竭尽全力,却毫无收获。 后来我下午继续肛还是肛不动,但是mikufun大神,在刚学线段树的阶段,把这道我现在都要写30min的难题给A了! 他当时的NB代码: 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 struct tree{ 5 int l,r,da,dam,dal,dar; 6 int lme,lmr,le,lr; 7 }t[1000000]; 8 void build(int l1,int r1,int k){ 9 t[k].l=l1,t[k].r=r1; 10 if(l1==r1){ 11 scanf("%d",&t[k].da); 12 t[k].dal=t[k].dam=t[k].dar=t[k].da; 13 t[k].le=t[k].lme=t[k].lmr=t[k].lr=l1; 14 return; 15 } 16 int mid=(l1+r1)/2; 17 build(l1,mid,k*2); 18 build(mid+1,r1,k*2+1); 19 t[k].da=t[k*2]