博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「一本通 4.1 练习 2」简单题
阅读量:5127 次
发布时间:2019-06-13

本文共 1948 字,大约阅读时间需要 6 分钟。

题目描述

题目来源:CQOI 2006

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

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

操作 回答 操作后的数组
1 1 10 N/A 11111111110000000000
2 6 1 11111111110000000000
2 12 0 11111111110000000000
1 5 12 N/A 11110000001100000000
2 6 0 11110000001100000000
2 15 0 11110000001100000000
1 6 16 N/A 11110111110011110000
1 11 17 N/A 11110111111100001000
2 12 1 11110111111100001000
2 6 1
11110
1
​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
#include
#include
#include
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

你可能感兴趣的文章
linux升级openssl
查看>>
[分块] 洛谷 P3396 哈希冲突
查看>>
postgresql 的操作
查看>>
【转】py2exe使用方法
查看>>
js 数组 随机排序
查看>>
网络七层协议
查看>>
《程序设计实践》中文版pdf
查看>>
Effective Java中文版(第2版)pdf
查看>>
XML与数据库pdf
查看>>
stegsolve下载
查看>>
像计算机科学家一样思考Python pdf
查看>>
深度探索C++对象模型.pdf
查看>>
网络营销教程—SEO 第二章 搜索引擎(第一节)
查看>>
ADOdb
查看>>
ZooKeeper集群搭建
查看>>
Android使用LocalSocket抓取数据
查看>>
ubuntu 10.10显示grub菜单
查看>>
python基础学习(一)
查看>>
门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
查看>>
json数据的转换
查看>>