P2253 好一个一中腰鼓!
题意:给你一个序列,初始是0,每次一个操作,把一个数^=1
每次求出最长01串的长度
正解:线段树(虽然暴力能过)
对于每个区间,记录三个值
lmax,以l为首的01串长度
rmax,以r为尾的01串长度
mmax,既不以l又不以r为为端点的完全包在区间内的最长01串长度
注意合并!
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
bool turn[];
struct node
{
node *ls;
node *rs;
int lmax;
int rmax;
int mmax;
int l;
int r;
int len;
};
int n;
int m;
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
inline void push_up(node *now,int pos)
{
now->lmax=now->ls->lmax; //最起码当前区间的lmax也得等于左儿子的lmax
if(turn[pos]!=turn[pos+]&&now->lmax==(now->ls->len)) //看左孩子右端和右孩子左端是否能接上&&lmax刚好为区间长度(全符合)
now->lmax+=now->rs->lmax; //接上
now->rmax=now->rs->rmax; //右孩子同理
if(turn[pos]!=turn[pos+]&&now->rmax==(now->rs->len))
now->rmax+=now->ls->rmax;
now->mmax=max(now->ls->mmax,now->rs->mmax); //中间的先去max
if(turn[pos]!=turn[pos+])
now->mmax=max(now->mmax,now->ls->rmax+now->rs->lmax); //考虑接上的情况
}
inline void build(node *now,int l,int r)
{
now->l=l;
now->r=r;
now->lmax=;
now->rmax=;
now->mmax=;
now->len=now->r-now->l+;
if(l==r)
{
now->lmax=;
now->rmax=; //最短为1
now->mmax=;
return;
}
int mid=(l+r)>>;
now->ls=new node();
now->rs=new node();
build(now->ls,l,mid);
build(now->rs,mid+,r);
push_up(now,mid);
}
inline void lazy(node *now,int k)
{
if(now->l>k||now->r<k) return;
if(now->l==k&&now->r==k)
{
turn[now->l]^=; //到达叶子直接更新
return;
}
lazy(now->ls,k);
lazy(now->rs,k);
push_up(now,(now->l+now->r)>>);
}
signed main()
{
n=read();
m=read();
node *root=new node();
build(root,,n);
while(m--)
{
lazy(root,read());
put(max(root->lmax,max(root->rmax,root->mmax))); //根(全序列)取max
putchar('\n');
}
olinr ~~(^_^)+love_nmr;
}
P2253 好一个一中腰鼓!的更多相关文章
- 洛谷 P2253 好一个一中腰鼓! 题解
P2253 好一个一中腰鼓! 题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:"忽一人 ...
- 洛谷P2253 好一个一中腰鼓!
题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:“忽一人大呼:‘好一个安塞腰鼓!’满座寂然,无敢 ...
- 洛谷 P2253 好一个一中腰鼓!
题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:“忽一人大呼:‘好一个安塞腰鼓!’满座寂然,无敢 ...
- 「Luogu P2253 好一个一中腰鼓!」
就这道题的理论难度来说绿题是有点低了,但是这道题的实际难度来看,顶多黄题,所以建议加强数据或出数据升级版. 前置芝士 线段树:具体可以看我的另一篇文章. 具体做法 暴力的方法想必都会,所以来讲一下正解 ...
- luogu2253 好一个一中腰鼓!
先说一个小trick,一开始我们把他赋值成是红.白相间的,查询就查询的是全红或全白即可. 然后就可以做啦 题解里面好像都是线段树 暴力的题解好像都被del了 貌似暴力交上去也过不了了 然后我想说 分块 ...
- 把一个一中的字段更新另一个表中的t-sql
UPDATE dbo.CommDescr SET Descr=(SELECT ba.content FROM dbo.blog_article ba WHERE ba.id=3) WHERE Comm ...
- noip2017考前整理(未完)
快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...
- mybatis 常用
1.新增时获得主键 <insert ...> <selectKey resultType="java.lang.Integer" keyProperty=&quo ...
- [HNOI2018]爆零记
Day 0 完全不知道做什么. 打了一个splay板子,还没调出来emmmmm 不想做题目,最后做的一题是[HNOI2016]的超(sha)难(bi)题网络. 当我希望省选能出一下树剖时,旁边的大佬跟 ...
随机推荐
- rem怎么计算
px:相对长度单位.像素px是相对于显示器屏幕分辨率而言的 em:相对单位,继承父节点(层层继承,传递)基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px ...
- TP-Link WR703N OpenWRT固件修改WAN LAN排序
有一种方法就是macvlan了.添加到rc.local文件中,具体不再阐述. 此方法只适合编译固件的情况下调整WAN/LAN顺序. wr703n等(包含其他未列出的单网口路由,AP),修改WAN LA ...
- scrapy-redis源码抛析
#scrapy-redis--->queue.py-->class FifoQueue 队列 LifoQueue(lastinfirstout栈) #self.server父类Base中链 ...
- 1106SQLserver基础--变量、运算符的使用,if...else,while语句
数据库---变量(对数据库中的数据没有任何影响) 作用:临时存储数据的作用,起一个衔接的作用,为了方便理解存储过程. 例:Declare @hello varchar(20) Set @hello=’ ...
- 问题:只能在执行 Render() 的过程中调用 RegisterForEventValidation;结果:只能在执行 Render() 的过程中调用 RegisterForEventValidation
只能在执行 Render() 的过程中调用 RegisterForEventValidation 当在导出Execl或Word的时候,会发生只能在执行 Render() 的过程中调用 Register ...
- Android studio导入svn工程
Quick Start——> Check outproject from Version——> Subversion——> ‘+’加号 ——> 输入网址 ——> 注意选择 ...
- LINUX中错误 SELinux is disabled
解决: setenforce: SELinux is disabled 那么说明selinux已经被彻底的关闭了 如果需要重新开启selinux,请按下面步骤: vi /etc/selinux/con ...
- go 语言介绍
特点1. 静态类型,编译开源语言 2. 脚本化的语法,支持多种编程范式(函数式,面向对象) 3. 原生,给力的并发支持并发编程 Go语言的优势: 1.脚本化的语法:开发效率高,容易上手 2.静态类型+ ...
- iOS 打包生成ipa文件(使用终端命令打包)
1. 打开终端 2.在终端输入cd +空格 把工程文件直接拖到终端,然后回车 3. 在终端输入xcodebuild,回车 然后你可以发现工程文件里多了一个build文件夹 在build文件夹中,有一个 ...
- 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Halftoning 标签: 图像处理MATLAB 2017-04-2
实验要求: Image Printing Program Based on Halftoning Objective: To know in principle what is "halft ...