1156: 新年彩灯Ⅰ

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 498  Solved: 65
[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

HINT

Source

[Submit][Status][Web Board]

中文  English  
Anything about the Problems, Please Contact Admin:admin 
All Copyright Reserved 2010-2011 ZCMU TEAM

解析:很久以前做过的一道树状数组的题目,超时了。以为是要线段树去解决的,事实上,并不是。

就是因为有可能a>b.orx>y,这一点给忽略了。所以一直超时。应该要对a,b预处理一下。交换大小。

如果树状数组不清楚的 可以看看我总结的博客-------树状数组

#include<bits/stdc++.h>
using namespace std;#define e exp(1)
#define pi acos(-1)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define ll long long
#define ull unsigned long long
#define mem(a,b) memset(a,b,sizeof(a))const int maxn=1000000+10;
int c[maxn];
int n,m,k,a,b;int lowbit(int x)
{return x&(-x);
}
void update(int i,int value)
{while(i>0){c[i]+=value;i-=lowbit(i);}
}
int getSum(int i)
{int sum=0;while(i<=n){sum+=c[i];i+=lowbit(i);}return sum;
}int main()
{while(~scanf("%d%d",&n,&m)){mem(c,0);for(int i=0; i<m; i++){scanf("%d%d%d",&k,&a,&b);if(a>b){int t=a;a=b;b=t;}if(k==1){update(b,1);update(a-1,-1);}else {for(int j=a; j<=b; j++)if(getSum(j)%2==1)printf("1");else printf("0");printf("\n");}}}return 0;
}

zcmu1156(树状数组)相关推荐

  1. 洛谷 P5057 [CQOI2006]简单题(树状数组)

    嗯... 题目链接:https://www.luogu.org/problem/P5057 首先发现这道题中只有0和1,所以肯定与二进制有关.然后发现这道题需要支持区间更改和单点查询操作,所以首先想到 ...

  2. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  3. 【BZOJ2434】[NOI2011]阿狸的打字机 AC自动机+DFS序+树状数组

    [BZOJ2434][NOI2011]阿狸的打字机 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P ...

  4. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  5. poj_3067 树状数组

    题目大意 左右两个竖排,左边竖排有N个点,从上到下依次标记为1,2,...N; 右边竖排有M个点,从上到下依次标记为1,2....M.现在从K条直线分别连接左边一个点和右边一个点,求这K条直线的交点个 ...

  6. hdu 1166 敌兵布阵(树状数组)

    题意:区间和 思路:树状数组 #include<iostream> #include<stdio.h> #include<string.h> using names ...

  7. Equalizing Two Strings 冒泡排序or树状数组

    首先考虑排序后相等 如果排序后相等的话就只考虑reverse长度为2的,所以a或者b排序后存在相邻两个字母相等的话就puts YES,n>26也直接puts YES 不然的话就假设c为a,b排完 ...

  8. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

  9. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

最新文章

  1. wpf里的menu怎么用_股市里的两市成交量是什么,它反映了什么,我是怎么用它来定投的...
  2. 21 week4 submit buidAndRun() node-rest-client
  3. vue中如何解决touch和click共存的问题
  4. 二维树状数组模板(区间修改+区间查询)
  5. leetcode 605. 种花问题(贪心算法)
  6. (2) 第二章 WCF服务与数据契约 服务契约详解(三)- [ServiceContract]特性
  7. YUI Compressor
  8. PyQT项目优化---添加多线程数控制
  9. 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
  10. python中向量长度_线性代数精华——矩阵的特征值与特征向量
  11. 人工智能还能登上微博热搜?热搜关键词你得看看!
  12. 77种互联网盈利创新模式(7)
  13. 设计模式学习笔记(九)——Composite组合模式
  14. 二分搜索,欧几里德算法
  15. 参考:创业公司搭建自己的技术架构
  16. 不常用的SQL语句记录
  17. 固态硬盘测试软件有哪些,手把手教你测试固态硬盘!硬盘测试软件大汇总
  18. jeb 导出java_[原创] JEB2插件,导出APK资源文件
  19. kali破解无线WIFI密码
  20. python去除视频马赛克_python使用opencv实现马赛克效果示例

热门文章

  1. 人工智能未来读后感 ----by RayKurzweil
  2. [高级软件工程教学]团队Beta阶段成绩汇总
  3. 2016.6.23 随笔———— AJAX
  4. ECMAScript 6教程 (一)
  5. 使用C语言进行面向对象的开发--GObject入门[2]
  6. k均值算法原理详细讲解以及matlab代码实现
  7. 统计学习:协方差和相关性
  8. Centos下重要日志文件及查看方式
  9. 【Python】字典哈希表按键(key)值(value)顺序和逆序输出
  10. 阴差阳错2019-12-13