如果你这题 RE
查看原帖
如果你这题 RE
242702
registerGen楼主2020/6/27 22:20

(如果你用的是第一篇题解的 O(nlog2n)O(n\log^2 n) 二分 + 线段树做法)

看看是不是注释的地方出了问题。

inline bool check(int x)
{
	build(1,1,n,x);
	for(int i=1;i<=m;i++)
	{
		int opt=q[i].opt,l=q[i].l,r=q[i].r;
		int tmp=query(1,1,n,l,r);
		if(tmp==0||tmp==r-l+1)continue; // here,特判是不是全是 0 或 1
		if(opt==0)
		{
			modify(1,1,n,r-tmp+1,r,1);
			modify(1,1,n,l,r-tmp,0);
		}
		else
		{
			modify(1,1,n,l,l+tmp-1,1);
			modify(1,1,n,l+tmp,r,0);
		}
	}
	return query(1,1,n,p,p);
}

如果不加,那么在 modify 中,左端点有可能大于右端点,然后就 GG 了。

附上一组数据:

input:

6 3
1 6 2 5 3 4
0 1 4
1 3 6
0 2 4
1

output:

1
2020/6/27 22:20
加载中...