「一本通 4.1 练习 2」简单题

题目描述

题目来源:CQOI 2006

有一个 n 个元素的数组,每个元素初始均为 0。有 m 条指令,要么让其中一段连续序列数字反转——0 变 1,1变 0(操作 1),要么询问某个元素的值(操作 2)。

例如当 n=20 时,10 条指令如下:

操作回答操作后的数组
1 1 10N/A11111111110000000000
2 6111111111110000000000
2 12011111111110000000000
1 5 12N/A11110000001100000000
2 6011110000001100000000
2 15011110000001100000000
1 6 16N/A11110111110011110000
1 11 17N/A11110111111100001000
2 12111110111111100001000
2 61
111101​11111100001000

输入格式

第一行包含两个整数 n,m,表示数组的长度和指令的条数;
以下 m行,每行的第一个数 t 表示操作的种类:

  • 若 t=1,则接下来有两个数 L,R,表示区间 [L,R] 的每个数均反转;
  • 若 t=2,则接下来只有一个数 i,表示询问的下标。

输出格式

每个操作 2 输出一行(非 0 即 1),表示每次操作 2 的回答。

样例

样例输入

20 10 1 1 10 2 6 2 12 1 5 12 2 6 2 15 1 6 16 1 11 17 2 12 2 6

样例输出

1 0 0 0 1 1

数据范围与提示

对于 50% 的数据,1≤n≤10^3,1≤m≤10^4
对于 100% 的数据,1≤n≤10^5,1≤m≤5×10^5,保证 L≤R

 

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const long long maxn=100010;
int n, k;
inline void qread(int &x){x = 0;int ch = getchar();while(ch < '0' || ch > '9')        ch =getchar();while(ch >='0' && ch <= '9')    x = 10 * x + ch - 48, ch = getchar();
}
struct BItree{int data[maxn];BItree(){memset(data, 0, sizeof(data));}void add(int x, int v){for(; x <= n; x += (x&-x))data[x] += v;}int sum(int x){int ans = 0;for(; x; x -= (x&-x))ans += data[x];return ans;    }
};
int main(void)
{BItree change;qread(n);qread(k);while(k--){int op;qread(op);if(op == 1){int y, z;qread(y), qread(z);change.add(y, 1);change.add(z + 1, 1);}else{int y;qread(y);printf("%d\n", change.sum(y)&1);}}
}

思路:

  以树状数组统计自1-i数列变化的次数,若变化数为奇,值为1, 否则为0

转载于:https://www.cnblogs.com/junk-yao-blog/p/9471116.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定时器取数据时实时进来的数据_Redis-数据淘汰策略amp;持久化方式(RDB/AOF)amp;Redis与Memcached区别...

Redis与Memcached区别&#xff1a; 两者都是非关系型数据库。主要有以下不同&#xff1a; 数据类型&#xff1a; Memcached仅支持字符串类型。 redis支持&#xff1a;String,List,set,zset,hash 可以灵活的解决问题。 数据持久化&#xff1a; Memcached不支持持久化。 Redis采…

linux 下建立多个tomcat

第一步&#xff1a;复制&#xff0c;解压 将准备好的tomcat压缩包复制到你准备安装的目录&#xff0c;我的tomcat压缩包名字是tomcat.tar.gz,我的安 装目录是 /usr/java/tomcat 第二步&#xff1a;解压tomcat [rootaliServer tomcat]# tar -xvf tomcat.tar.gz 第三步&#xff…

java apply 函数_Js(Javascript)中的apply方法的使用

Function.apply(obj,args)方法能接收两个参数&#xff0c;简单说apply方法作用就是给类或方法中的this赋值。所以学会这个方法首先要知道this的作用。(this的用法可以看一下这个链接&#xff1a;http://www.cjavapy.com/article/8/ )obj&#xff1a;这个对象将代替Function类里…

linux iptables配置

1 iptables默认系统自带 setup 2重启防火墙 /etc/init.d/iptables restart 3接受端口 Vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 4 #配置&#xff0c;禁止进&#xff0c;允许出&#xff0c;允许回环网卡 iptables -P I…

memcpy函数_[PART][BUG][MSVCRT][C][CCF NOI1097] 关于memcpy的坑

[Incompleted]CCF NOI1097 试题&#xff0c;本人的源码&#xff1a;Ubuntu Pastebin​paste.ubuntu.comUbuntu PastebinUbuntu Pastebin: SourceCodebyJulianDroid​paste.ubuntu.com满分代码&#xff1a;https://blog.csdn.net/tigerisland45/article/details/71038551​blog.…

Bugku杂项-convert

一进去就发现一堆二进制数&#xff0c;然后考虑怎么才能把这个和隐写扯上关系。首先&#xff0c;二进制我们肉眼就是看不懂再说什么的&#xff0c;这里就想到了转换&#xff0c;再联想上hex将原始数据转化为16进制。我们可以先把2进制转化为16进制&#xff0c;然后再放到hex上看…

tomcat:Cannot find /usr/local/tomcat1/bin/setclasspath.sh

首先看下报错代码&#xff1a; Cannot find /usr/local/tomcat1/bin/setclasspath.sh This file is needed to run this program这个可能是没有在 /etc/profile 中配置环境&#xff0c;这是第一种可能&#xff1b;如果是这种情况的话&#xff0c;可以这样做:vi /etc/profile 并…

在java中柱状图代码_我在java中编写了个柱状图,可运行了,我想让柱状图在JSP页面中显示,请问有什么方法么?谢谢。...

h1,h2 代表了柱形图的高度你可以这样试一试function createImgItem(count){var divdocument.createElement("");var imgdocument.createElement("");img.src"getCertReviewInfoImg.jspx?perCertId${perCertId}&reviewIndex"count;div.appen…

图解cacti简单使用

1登录 admin admin 2点击devices localhost 3进入配置保存 4保存 http服务要启动哦 5一步步做 6graph tree 7执行/usr/bin/php /var/www/html/cacti/poller.php 8如果时间设置错误去php.ini里面修改时间 YSTEM STATS: Time:0.4759 Method:cmd.php Processes:1 Threads:N/…

AFNetworking 3.0源码阅读 - AFURLResponseSerialization

这次来说一下AFURLResponseSerialization这个HTTP响应类。 定义了一个协议&#xff0c;该协议返回序列化后的结果。后续的AFHTTPResponseSerializer以及他的子类都遵循了该协议 该类内有很多子类定义&#xff0c;这里借用一张图来展示&#xff0c;之后一个一个来说。 我们先来看…

python3纵向输出字符串_Python 3.x 格式化输出字符串 % format 笔记

python格式化字符串有%和{}两种 字符串格式控制符.字符串输入数据格式类型(%格式操作符号)%%百分号标记%c字符及其ASCII码%s字符串%d有符号整数(十进制)%u无符号整数(十进制)%o无符号整数(八进制)%x无符号整数(十六进制)%X无符号整数(十六进制大写字符)%e浮点数字(科学计数法)%…

linux 下tomcat服务每天定时启动

1l先准备一个脚本 #!/bin/sh #./etc/profile export JAVA_HOME/usr/java/jdk1.6.0_45 sh /home/tomcat-bingchuang/bin/shutdown.sh sleep 60s sh /home/tomcat-bingchuang/bin/startup.sh 2放置到如上/home/ tomcat-bingchuang/bin/目录下 赋予777权限 并在linux里面设置…

Swordsman

ps&#xff1a;比赛的时候想到了做法&#xff0c;k次排序&#xff0c;然后每次消去能消的。。。然而这种做法是错误的&#xff0c;神奇的是测试案例中排在奇数的案例会WA&#xff0c;排在偶数的案例都过了&#xff0c;被注释的代码会T. #include<bits/stdc.h> #define UL…

java socket编程聊天室_Java Socket通信之聊天室功能

Java Socket通信之聊天室功能发布时间&#xff1a;2020-10-17 14:36:00来源&#xff1a;脚本之家阅读&#xff1a;73作者&#xff1a;LY_624本文实例为大家分享了Java Socket聊天室功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下Client.javaimport java.io.*;i…

python计算数组元素的和_python中数组的运算

Python中进行数组的运算需要调用NumPy包。其官网是&#xff1a;http://www.numpy.org/​www.numpy.orgNumPy是Python语言的一个扩充程序库。它支持高级大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁…

linux mysql数据库定时备份

1在linux上面创建一个文件夹&#xff0c;并且进行备份 cd /home mkdir backup cd backup 2创建一个脚本 Vi imaginebase.sh #!/bin/bash mysqldump -uroot -ppassword01! imaginebase > /home/backup/imaginebase_KaTeX parse error: Expected group after _ at position 1…

[NOI2014] 起床困难综合症

水题的题解也水...... 原题链接&#xff1a;洛谷 P2114 [NOI2014]起床困难综合症 位运算每一位之间互不干扰。 经过所有门之后每一位不外乎四种结果&#xff1a;一定是0&#xff0c;一定是1&#xff0c;不变或取反。 按位枚举&#xff0c;贪心即可。 对于不变的&#xff0c;我们…

java调用webroot下的文件_JAVA 访问WebRoot下的目录文件

/*** 获取到webroot里面的数据*/java.net.URL url2 classLoader.getResource("");String ROOT_CLASS_PATH url2.getPath() "/";File rootFile new File(ROOT_CLASS_PATH);String WEB_INFO_DIRECTORY_PATH rootFile.getParent() "/";File w…

统计一行文本的单词个数_word操作技巧:不同情况的文字统计方法

最近有朋友询问&#xff0c;如何快速统计出Word文档的字数&#xff1f;这个问题其实非常简单&#xff0c;但往往是这种最简单的知识容易被大家忽视&#xff0c;因此造成困扰。所以&#xff0c;今天我们将为大家详细介绍几种Word统计文档字数的方法&#xff0c;希望能帮助到你&a…

linux mysql5.6.27源码安装和错误解决

centos mysql5.6.27 1编译安装 先进入到文件放置的路径下 创建一个个文件 #mkdir–p /data/mysql/mysql #mkdir–p /data/mysql/mysqldat 2创建用户和用户组 groupadd mysql useradd -r -g mysql mysql 3赋予数据存放目录权限 chown mysql:mysql -R /data/mysql/mysqldata/ 4解…