Vijos P1881 闪烁的星星
背景
星光闪耀--深蓝色空间
听说过他们的语言
沉默
暮
他们称赞深相互
描写叙述
繁星, 漫天的繁星.
繁星排成一列, 我数一数呀, 一共同拥有N仅仅小星星呢.
星星们是听话的好孩子, 小岛在指挥它们跳舞呢.
舞蹈開始前, 它们都亮了起来!
小岛指一指第i仅仅小星星, 仅仅见第i仅仅小星星立马改变了自己的状态.
假设它之前是亮着的, 那么立马就灭掉了.
假设它之前是灭掉的, 如今就立马亮了呀!
假设说, 能够有连续若干仅仅小星星.
当中随意相邻两仅仅星星状态不同.
那就是最美的了.
小岛希望知道:
每一次发出指令之后
能找到最长的连续小星星, 满足上述需求的
有多长?
格式
输入格式
第一行有两个整数, 分别为星星总数N, 和指令总数Q.
1<=N<=200,000; 1<=Q<=200,000.
之后Q行, 每行有一个整数i: 1<=i<=N, 表示小岛发出的指令.
输出格式
输出有Q行, 当中每i行有一个整数.
表示小岛的第i条指令发出之后, 能够找到的满足要求的最长连续星星序列有多长?
限制
对于20%的数据: N, Q <= 100.
对于30%的数据: N, Q <= 70000.
对于100%的数据: 1 <= N, Q <= 200,000.
提示
对于例子, 星星序列的状态依次为: OOOOOO -> OXOOOO -> OXOXOO
这里用O表示亮着的星星, 用X表示灭掉的星星.
线段树维护每段区间里的从左边第一个往右能延伸的最大长度,从右边最后一个往左能延伸的最大长度。还有中间的最大长度。
#include <stdio.h>
#include <string.h>
#include <math.h>
#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, 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);
} 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--) {
scanf("%d", &c);
update(1, 1, n);
printf("%d\n", a[1].mx);
}
return 0;
}
Vijos P1881 闪烁的星星的更多相关文章
- Vijos P1881 闪烁的星星 (加强自己多一点。。)
假设每次查询不是整个长度,但[x, y]此时间间隔. . 闲来无事写的,感觉是正确的.这将成为合并范围. #include <cstdio> #include <cstring> ...
- 如何用PowerPoint制作闪烁的星星
在PPT中,PPT动画说是幻灯片PPT中的精华是当之无愧的!ppt文件有了动画,犹如插上翅膀的鸟,让PPT的色彩衍生出了更多的特色.只要你的ppt动画效果制作的对,你的幻灯片将明显与众不同,观众也更容 ...
- canvas画随机闪烁的星星
canvas画一颗星星: 规则的星星有内切圆和外切圆,每两个点之间的角度是固定的,因此可得到星星的每个点的坐标,画出星星. function drawStars(x,y,radius1,radius2 ...
- html5实例-闪烁的星星
一.绘制五角星 1.1页面结构 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- vijos p1881 线段树
题意:点我 我就想问,现在换代码风格还来得及吗? 2015-05-19:线段树进一步加强,看来不用换风格了 维护左右节点左右端颜色和长度即可 #include<cstdio> #inclu ...
- Vijos1881闪烁的繁星 [线段树]
P1881闪烁的繁星 背景 繁星闪烁着--深蓝的太空何曾听得见他们对语沉默中微光里他们深深的互相颂赞了 描述 繁星, 漫天的繁星.繁星排成一列, 我数一数呀, 一共有N只小星星呢. 星星们是听话的好 ...
- HTML5应用——生日快乐动画之星星
在讲述绘制星星动画之前,先介绍一点javascript知识. 面向对象: javascript本质上不是面向对象语言,而是脚本语言,一般只适合简单.代码量少的程序,因为脚本过于复杂会直接导致浏览器出现 ...
- css3中变形与动画(三)
transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...
- 荒木毬菜 小情歌日文版 - 独身OL之歌
咎(とが)めるつもりもないけどtogameru tumorimo naikedo并不想责备在身旁 暇(ひま)してる时间(じかん)をhimashiteru jikan wo无所事事的时间 パジャマの鸟( ...
随机推荐
- MSSQL - SqlDataReader
DataReader对象: ·DataReader对象是一个读取行的只读流的方式,绑定数据时比使用数据集方式性能要高,因为他是只读的,所以如果要对数据库中的数据进行修改就需要借助 将所做的修改保存到数 ...
- code blocks 快捷键
设置快捷键可以在setting-Editor-keyboard shortcuts里设置 ==日常编辑== • 按住Ctrl滚滚轮,代码的字体会随你心意变大变小.• 在编辑区按住右键可拖动代码,省去拉 ...
- WCF技术剖析之二十一:WCF基本异常处理模式[中篇]
原文:WCF技术剖析之二十一:WCF基本异常处理模式[中篇] 通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultExcept ...
- VC 为静态控件添加事件
操作系统:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为静态控件添加事件,如:STATIC.Picture Control等等 有时候我们找到一个图片,为对话框背景添加 ...
- 配置rhel 6.4(64位)安装使用syslog-ng 3.5
我基本的博客地址是:www.cppblog.com/zdhsoft 相应的CentOS 6.x也就可能使用. 下载地址: 第一步:安装 wget http://www.balabit.com/down ...
- Qt5.2 android 环境搭建及其测试
1.<安装> 软件: qt-windows-opensource-5.2.0-android-x86-win32-offline //Qt开发环境 adt-bundle-windows-x ...
- Axure快捷键大全 Axure RP Pro 6.5快捷键
习惯用Axure快捷键会让你做原型的时候更得心应手.Axure中文网总结了常用的一些快捷键分享给大家 . Axure RP Pro 6.5快捷键大全,如有疏漏,欢迎补充. 基本快捷键: 打开:Ct ...
- String[255]在高版本Delphi里还是被解释成Byte,总体长度256,使用StrPCopy可以给Array String拷贝字符串(内含许多实验测试)
学了好多不了解的知识: procedure TForm1.Button1Click(Sender: TObject); var s1 : String; s2 : String[]; begin s1 ...
- XP下的进程静音技术(遍历进程,遍历输入模块,遍历输入函数,找到函数并HOOK) good
很多浏览器有这种功能,实现原理都是一样.发声源基本都来自Flash,比如Flash游戏啦,视频播放器啦等等 而Flash的发声都是通过winmm.dll::waveOutWrite函数来完成,所以,我 ...
- 与众不同 windows phone (8) - Tile(磁贴)
原文:与众不同 windows phone (8) - Tile(磁贴) [索引页][源码下载] 与众不同 windows phone (8) - Tile(磁贴) 作者:webabcd介绍与众不同 ...