假设每次查询不是整个长度,但[x, y]此时间间隔。

闲来无事写的,感觉是正确的。这将成为合并范围。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <queue>
#include <algorithm>
#define mem(f) memset(f,0,sizeof(f))
#define M 100005
#define mod 1000000007
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
using namespace std;
typedef long long LL;
const int MAX = 0x3f3f3f3f;
const int maxn = 200005; int mx_three(int a, int b, int c) {
return max(a, max(b, c));
} int n, q, c, x, y, b[maxn];
struct C {
int mx, lx, rx;
} a[maxn<<2]; void build(int o, int l, int r) {
a[o].lx = a[o].mx = a[o].rx = 1;
if(l == r) return;
int m = (l+r) >> 1;
build(lson);
build(rson);
} C query(int o, int l, int r) {
if(x <= l && r <= y) return a[o];
int m = (l+r) >> 1, len = r-l+1;
if(y <= m) return query(lson);
if(m < x ) return query(rson); C s, s1, s2;
s1 = query(lson);
s2 = query(rson);
s.lx = s1.lx;
s.rx = s2.rx;
if(b[m] != b[m+1]) {
if(s.lx == len-(len>>1)) s.lx += s2.lx;
if(s.rx == len>>1) s.rx += s1.rx;
s.mx = mx_three(s1.mx, s2.mx, s1.rx+s2.lx);
} else s.mx = max(s1.mx, s2.mx);
return s;
} void update(int o, int l, int r) {
if(l == r) {
b[c] ^= 1;
return;
}
int m = (l+r) >> 1;
if(c <= m) update(lson);
else update(rson); int len = r-l+1, L = o<<1, R = o<<1|1;
a[o].lx = a[L].lx;
a[o].rx = a[R].rx;
if(b[m] != b[m+1]) {
a[o].mx = mx_three(a[L].mx, a[R].mx, a[L].rx+a[R].lx);
if(a[o].lx == len-(len>>1)) a[o].lx += a[R].lx;
if(a[o].rx == len>>1) a[o].rx += a[L].rx;
} else a[o].mx = max(a[L].mx, a[R].mx);
} int main()
{
scanf("%d%d", &n, &q);
build(1, 1, n);
while(q--) {
int rr;
scanf("%d", &rr);
if(rr == 2) {
scanf("%d", &c);
update(1, 1, n);
} else {
scanf("%d%d", &x, &y);
printf("%d\n", query(1, 1, n).mx);
}
}
return 0;
}

Vijos P1881 闪烁的星星 (加强自己多一点。。)的更多相关文章

  1. Vijos P1881 闪烁的星星

    背景 星光闪耀--深蓝色空间 听说过他们的语言 沉默 暮 他们称赞深相互 描写叙述 繁星, 漫天的繁星. 繁星排成一列, 我数一数呀, 一共同拥有N仅仅小星星呢. 星星们是听话的好孩子, 小岛在指挥它 ...

  2. 如何用PowerPoint制作闪烁的星星

    在PPT中,PPT动画说是幻灯片PPT中的精华是当之无愧的!ppt文件有了动画,犹如插上翅膀的鸟,让PPT的色彩衍生出了更多的特色.只要你的ppt动画效果制作的对,你的幻灯片将明显与众不同,观众也更容 ...

  3. canvas画随机闪烁的星星

    canvas画一颗星星: 规则的星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星. function drawStars(x,y,radius1,radius2 ...

  4. html5实例-闪烁的星星

    一.绘制五角星 1.1页面结构 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  5. vijos p1881 线段树

    题意:点我 我就想问,现在换代码风格还来得及吗? 2015-05-19:线段树进一步加强,看来不用换风格了 维护左右节点左右端颜色和长度即可 #include<cstdio> #inclu ...

  6. Vijos1881闪烁的繁星 [线段树]

    P1881闪烁的繁星  背景 繁星闪烁着--深蓝的太空何曾听得见他们对语沉默中微光里他们深深的互相颂赞了 描述 繁星, 漫天的繁星.繁星排成一列, 我数一数呀, 一共有N只小星星呢. 星星们是听话的好 ...

  7. HTML5应用——生日快乐动画之星星

    在讲述绘制星星动画之前,先介绍一点javascript知识. 面向对象: javascript本质上不是面向对象语言,而是脚本语言,一般只适合简单.代码量少的程序,因为脚本过于复杂会直接导致浏览器出现 ...

  8. css3中变形与动画(三)

    transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...

  9. 荒木毬菜 小情歌日文版 - 独身OL之歌

    咎(とが)めるつもりもないけどtogameru tumorimo naikedo并不想责备在身旁 暇(ひま)してる时间(じかん)をhimashiteru jikan wo无所事事的时间 パジャマの鸟( ...

随机推荐

  1. TCP、UDP数据包大小的限制(UDP数据包一次发送多大为好)——数据帧的物理特性决定的,每层都有一个自己的数据头,层层递减

    1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...

  2. delphi 精要-读书笔记(内存分配释放)

    delphi 精要-读书笔记(内存分配释放)     1.内存分为三个区域:全局变量区,栈区,堆区 全局变量区:专门存放全局变量 栈区:分配在栈上的变量可被栈管理器自动释放 堆区:堆上的变量内存必须人 ...

  3. Open Source RTOS

    http://www.osrtos.com/     Name License Platforms Description Last updated FreeRTOS Modified GPL MSP ...

  4. CentOS下yum使用代理的设置

    export后好像没用? 问题描述: CentOS yum时出现“Could not retrieve mirrorlist http://mirrorlist.centos.org/?release ...

  5. 100M 宽带办理

    http://zj.189.cn/zhuanti/kdsbz#%E5%8D%95%E5%AE%BD%E5%B8%A6%E7%89%B9%E6%83%A0

  6. android怎样查看当前project哪些profile是打开的

    代码project里面有三仅仅文件都是涉及到各个profile的宏的,各自是:featureoption.java.common/ProjectConfig.mk.product/ProjectCon ...

  7. Http协议学习总结(转)

    因为项目中很多地方都与Http协议有关,零散的了解了一下Http协议,但是没有系统的学习过. 今天根据网上其他同学的整理,加上我的一些经验,我也整理了一份.当做学习记录吧. 一.什么是HTTP协议 H ...

  8. Git——git 上传时 遗漏文件解决办法

    今天在Server上建立一个git 库,把本地的code 上传到Server,再次clone下来时,发现少了些文件.原来git 工具不上上传一些二进制,pdf,.patch等一些文件.在上传时,git ...

  9. android中更改spinner、AutoCompleteTextView切割线的颜色

    话说去除切割线的方法找了非常久也没找到,最终发现了更改切割线的方法 spinner和AutoCompleteTextView提示列表中间有一条黑色的切割线.想要改变它的颜色值,就要重写style. 1 ...

  10. Winform通用模块之流水号生成

    打算接下来的时间里把自己觉得用起来还比较好用的通用模块,在这里向大家介绍一下,如果你有更好的想法时,也希望你不吝指点. 1.数据库表及存储过程 在介绍这个通用流水号生成的模块前,我们先来看一下其相关的 ...