小细节求助
查看原帖
小细节求助
128239
C20203030楼主2021/10/25 21:48

看的 cmd\tt cmd 的题解,这个地方为什么要取 max\max 啊,不是单调的嘛。

assert\tt assert 一下就 RE\tt RE 穿了,删掉就 A\tt A 了,如果有做过本题的大佬求解释 qwq\tt qwq

局部代码:

for(int i=mid;i>=l;i--)
	{//(mid,p1] left , (p1,p2] both , (p2,r] right
		while(p1<r && in(s[p1+1],s[i])) p1++;
		while(p2<r && !in(s[i],s[p2+1])) p2++;
		p2=max(p2,p1);
	//	assert(p1<=p2);
		ans+=2*(p1-mid)*s[i].r+2*(sr[r]-sr[p2])
			+(p2-p1)*dep[s[i].x]+(sd[p2]-sd[p1])
			+(p2-p1)*s[i].r+(sr[p2]-sr[p1]);
		if(p1<p2)
		{
			if(p1>mid) q[++k]=node{-s[i].x,p1};
			q[++k]=node{s[i].x,p2};
		}
	}
2021/10/25 21:48
加载中...