由于脑洞的序列不会改变,考虑用线段树维护区间内sum,左边0的个数,右边0的个数,区间内最大脑洞.对于查询l~r最大脑洞可以将l~r分成logn个区间,总复杂度O(nlogn). #include<iostream> #include<cstdio> #include<cstdlib> #define N 800005 using namespace std; int n,m,p,x,y,l,r; int sum[N],L[N],R[N],tg[N],v[N],Ans[…
前言 这道题目呢,看上去很难,实际上我们可以用线段树解决这道题目. 正文 我们维护 sum.len.tag.lmax.rmax.ans. sum 就是这段区间非脑洞的个数 len 就是这段区间的长度 tag 就是我们的 lazy_tag lmax 就是从左开始的连续脑洞个数 rmax 就是从右开始的连续脑洞个数 ans 就是这段区间最大的连续脑洞 建树 由于 len 是不变的,所以我们可以建树的时候就求出 len t[num].len=r-l+1; pushup sum sum 就是左子树和右子…
题意 题目链接 Sol ODT板子题. 操作1直接拆区间就行. #include<bits/stdc++.h> #define fi first #define se second const int MAXN = 2e5 + 10; using namespace std; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…