1770: 按钮控制彩灯实验

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 194  Solved: 65
[Submit][Status][Web Board]

Description


教学安排,yy又去开心的做电学实验了。实验的内容分外的简单一串按钮通过编程了的EEPROM可以控制一串彩灯。然而选择了最low的一种一对一的控制
模式,并很快按照实验指导书做完实验的yy马上感觉到十分无趣。于是他手指在一排按钮上无聊的滑来滑去,对应的彩灯也不断的变化着开关。已知每一个按钮按
下会改变对应一个彩灯的状态,如此每次yy滑动都会改变一串彩灯的状态。现已知彩灯最初的状态,已经yy
n次无聊的滑动的起点和终点l,r。现问彩灯最终的状态。

Input

有多组数据。
每组数据第一行,n(1<=n<=10^5)代表彩灯串长度,t(0<=t<=10^5)代表yy滑动的次数
第二行n个数(0表示灭1表示亮)给出n个彩灯的目前的状态。
之后t行每行两个数li,ri(1<=li<=ri<=n)代表每次滑动的区间。

Output

每组用一行输出最终的串的状态,格式见样例。

Sample Input

  1. 3 2
  2. 1 0 1
  3. 1 3
  4. 2 3

Sample Output

  1. 0 0 1
  2.  
  3. 区间更新+单点求值 水,时间复杂度O(n*log(n)).
  1. #include <iostream>
  2. #include <cstring>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <algorithm>
  6. using namespace std;
  7. const int N = ;
  8. int a[N];
  9. int c[N],n,m;
  10. int lowbit(int i){
  11. return i&(-i);
  12. }
  13.  
  14. void update(int idx,int v){
  15. for(int i=idx;i<=n;i+=lowbit(i)){
  16. c[i]+=v;
  17. }
  18. }
  19. int getsum(int idx){
  20. int sum = ;
  21. for(int i=idx;i>=;i-=lowbit(i)){
  22. sum+=c[i];
  23. }
  24. return sum;
  25. }
  26. int main()
  27. {
  28. while(scanf("%d%d",&n,&m)!=EOF){
  29. memset(c,,sizeof(c));
  30. for(int i=;i<=n;i++){
  31. scanf("%d",&a[i]);
  32. }
  33. while(m--){
  34. int l,r;
  35. scanf("%d%d",&l,&r);
  36. update(l,);
  37. update(r+,-);
  38. }
  39. for(int i=;i<n;i++){
  40. if(getsum(i)%==){
  41. if(a[i]==) printf("1 ");
  42. else printf("0 ");
  43. }else {
  44. printf("%d ",a[i]);
  45. }
  46. }
  47. if(getsum(n)%==){
  48. if(a[n]==) printf("1\n");
  49. else printf("0\n");
  50. }else printf("%d\n",a[n]);
  51. }
  52. return ;
  53. }

csu 1770按钮控制彩灯实验(树状数组)的更多相关文章

  1. csu 1770: 按钮控制彩灯实验

    1770: 按钮控制彩灯实验 Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 341 ...

  2. 按钮控制彩灯实验 CSU - 1770 树状数组 差分变单点修改

    #include<iostream> #include<algorithm> #include<cstring> using namespace std; ; in ...

  3. 【树状数组】CSU 1811 Tree Intersection (2016湖南省第十二届大学生计算机程序设计竞赛)

    题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1811 题目大意: 一棵树,N(2<=N<=105)个节点,每个节点有一种颜 ...

  4. CSU - 1551 Longest Increasing Subsequence Again —— 线段树/树状数组 + 前缀和&后缀和

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1551 题意: 给出一段序列, 删除其中一段连续的子序列(或者不删), 使得剩下的序列 ...

  5. 【扫描线或树状数组】CSU 1335 高桥和低桥

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1335 [题意] 给定n座桥的高度,给定m次洪水每次的涨水水位ai和退水水位bi 询问有多少座桥 ...

  6. CSU 1551 Longest Increasing Subsequence Again(树状数组 或者 LIS变形)

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1551 升级版:Uva 1471 题意: 让你求删除一段连续的子序列之后的LIS. 题 ...

  7. 实验室外的攻防战 UOJ#180 [树状数组]

    实验室外的攻防战 UOJ#180 [树状数组] 题目 时针指向午夜十二点,约定的日子--2月28日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks\) 博士所在的实验室 ...

  8. 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组

    题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...

  9. csu 1757(贪心或者树状数组)

    1757: 火车入站 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 209  Solved: 51[Submit][Status][Web Board] ...

随机推荐

  1. python基础----isinstance(obj,cls)和issubclass(sub,super)、反射、__setattr__,__delattr__,__getattr__、二次加工标准类型(包装)

    一.isinstance(obj,cls)和issubclass(sub,super)                                isinstance(obj,cls)检查是否ob ...

  2. 根据数据库连接的java.sql.Connection获取数据库名称

    // 获取数据库的元数据信息 DatabaseMetaData metaData = conn.getMetaData(); // 获取数据库名称的方法 System.out.println(meta ...

  3. duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性

    转载请说明原出处,谢谢~~: 今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下 <Attribute name=&qu ...

  4. linux 版本查询

    原文 : http://www.ha97.com/2987.html 一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# ca ...

  5. Codeforces 221 B. Little Elephant and Numbers

    B. Little Elephant and Numbers time limit per test 2 seconds memory limit per test 256 megabytes inp ...

  6. Python学习笔记(四十八)POP3收取邮件

    收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上.收取邮件最常用的协议是POP协议,目前版本号是3,俗称POP3. Python内置一个poplib模块,实现了POP3协 ...

  7. 对 JavaScript 进行单元测试的工具

    简介 单元测试关注的是验证一个模块或一段代码的执行效果是否和设计或预期一样.有些开发人员认为,编写测试用例浪费时间而宁愿去编写新的模块.然而,在处理大型应用程序时,单元测试实际上会节省时间:它能帮助您 ...

  8. Java 注解全面解析

    1.基本语法 注解定义看起来很像接口的定义.事实上,与其他任何接口一样,注解也将会编译成class文件. @Target(ElementType.Method) @Retention(Retentio ...

  9. CodeForces - 1004C

    Since Sonya is interested in robotics too, she decided to construct robots that will read and recogn ...

  10. 127.0.0.1、localhost、0.0.0.0的区别

    在开发web应用的测试环境中,如果希望同一个局域网的同事通过内网IP访问自己的应用,则需要把web服务监听的ip地址改为0.0.0.0.为什么用127.0.0.1不行,而用0.0.0.0就可以呢? f ...