首页 > 分享 > ZCMU 1156 新年彩灯Ⅰ (树状数组的区间修改单点查询)

ZCMU 1156 新年彩灯Ⅰ (树状数组的区间修改单点查询)

Problem D: 新年彩灯Ⅰ

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 518  Solved: 72
[Submit][Status][Web Board]

Description

新年将至,YY准备挂一排彩灯,已知彩灯刚挂完的彩灯共有N盏(编号为1,2,3,……),并且都是灭的。彩灯的闪烁由一段程序控制。

每一秒钟程序会生成两个正整数a和b(1<=a,b<=N),然后将编号为a和b之间的所有灯的状态改变一次,即如果灯i是灭的,那么经过一次改变,灯i会亮,如果灯i是亮的,经过一次改变,灯i会灭。

当YY看着自己挂的彩灯不断闪烁的时候,问题来了,YY想知道任意时刻某一区间灯的状态。

Input

多组测试数据,每一组第一行是一个整数N(1<=N<=1000000)和一个整数M(1<=M<=3000)。

然后是M行数据,包括以下两种形式:

         1 a b 表示灯a和灯b之间的灯(含灯a和灯b)变换一次状态。

         0 x y 表示YY想知道此刻灯x到灯y(包含灯x和灯y)的状态.

Output

对于每次YY想知道结果的时候,输出一行灯的状态(编号小的灯优先),如果是亮的输出”1”,否则输出”0”;

Sample Input

3 3

1 1 2

1 2 3

0 1 3

Sample Output

101

题目大意:

有N个灯,刚开始都是灭的,然后在指定的连续区间内改变灯的状态,经过M-1次改变后询问指定区间内灯的状态。

想法:

刚开始没仔细想就直接做了,直接用数组表示状态用循坏改变状态,果然超时了。这题需要多次修改区间值并且最后要询问区间,所以是典型的树状数组模板题,用树状数组可以大大减少时间复杂度,就不会超时了。树状数组具体的过程看下面的代码和我的树状数组详解吧。要注意输入的区间不一定是左端点小于右端点,因此当左端点大于右端点时要交换它们的值。

AC代码:

#include<bits/stdc++.h>

using namespace std;

int light[1000005];

int tree[100005];

int N,M;

int Lowbit (int x){

return x&(-x);

}

void update (int i,int x){ //i点增加x

while (i <= N){

tree[i] += x;

i += Lowbit(i);

}

}

int sum (int x){ //对[1,x]区间求和

int sum = 0;

while (x > 0){

sum += tree[x];

x -= Lowbit(x);

}

return sum;

}

int main(){

int flag, l,r;

while (~scanf("%d%d",&N,&M)){

memset(light,0,sizeof(light));

memset(tree,0,sizeof(tree));

for (int i = 1; i<=M; i++){

scanf("%d%d%dn",&flag,&l,&r);

if (l>r){ //如果左边大于右边就交换他们的值

swap(l,r);

}

if (flag == 1){ // 改变[l,r]区间内灯的状态

update(l,1);

update(r+1,-1);

}

else {

for (int j = l; j<=r; j++){ //输出区间内灯的状态

if (sum(j)%2 == 1){ //单点查询,sum(j)表示第j个灯的值,即light[j].

printf("1");

}

else

printf("0");

}

printf("n");

}

}

}

return 0;

}

相关知识

ZCMU 1156 新年彩灯Ⅰ (树状数组的区间修改单点查询)
ZCMU1156 新年彩灯1(树状数组区间更新单点查询)
[HEOI2012] 树状数组 + 离线预处理 超详解【校队排位赛#12 J】
[HDOJ4325]Flowers(树状数组 离散化)
从select查询中将强制转换的值提取到数组中
算法的艺术
花期内花的数目【离散化+前缀和+差分】
数组退化
找到java分层开发的感觉,功能实现查询,修改,删除。。
C++ 程序设计:花期内花的数目(LeetCode:2251)

网址: ZCMU 1156 新年彩灯Ⅰ (树状数组的区间修改单点查询) https://m.huajiangbk.com/newsview105219.html

所属分类:花卉
上一篇: 机电工程系统中的智能化应用技巧(
下一篇: 邵阳市公园管理所关于LED灯串的