Easy问题(CQOI)
来源:互联网 发布:牛贝微信淘宝客v6.74 编辑:程序博客网 时间:2024/05/17 08:47
Easy问题(重庆2006省选)
时间:1 秒 内存:64 MB
题目描述
有一个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 11110111111100001000
输入
输入第一行包含两个整数n,m,表示数组的长度和指令的条数。以下m行,每行的第一个数t表示操作的种类。若t=1,则接下来有两个数L,R(L<=R),表示区间[L,R]的每个数均反转;若t=2,则接下来只有一个数I,表示询问的下标。
输出
输出中有多行.每个操作2输出一行(非0即1),表示每个操作2的回答。
样例输入
20 101 1 102 62 121 5 122 62 151 6 161 11 172 122 6
样例输出
100011
其它信息
50%的数据满足:1<=n<=1000, 1<=m<=10000。 100%的数据满足:1<=n<=100000, 1<=m<=500000。
#include<cstdio>
#define N 100002
int
c[N],I,n,q,x,y;
int
read()
{
int
x=0;
bool
f=0;
char
ch=
getchar
();
for
(;ch<
'0'
||ch>
'9'
;ch=
getchar
())
if
(ch==
'-'
) f=1;
for
(;ch>=
'0'
&&ch<=
'9'
;ch=
getchar
()) x=(x<<1)+(x<<3)+ch-
'0'
;
return
(f)?-x:x;
}
void
ad(
int
x,
int
w) {
for
(;x<=n;x=x+(x&-x)) c[x]=c[x]+w;}
int
qy(
int
x) {
int
s=0;
for
(;x;x=x-(x&-x)) s=s+c[x];
return
s;}
int
main()
{
for
(n=read(),q=read();q;--q)
if
(read()==1) x=read(),y=read(),ad(x,1),ad(y+1,-1);
else
{x=read();
if
(qy(x)&1)
puts
(
"1"
);
else
puts
(
"0"
);}
return
0;
}
0 0
- Easy问题(CQOI)
- [CQOI跪烂记]
- CQOI三角形
- CQOI珠宝
- CQOI矩形
- 集合问题(easy)
- 问题九十四: An Easy Task
- easy ui combobox 相关问题
- easy ui form 提交问题
- easy 多选框 单选框 选中问题
- 【CQOI 2009】 中位数
- 【CQOI 2006】 简单题
- 【CQOI 2006】移动棋子
- 【几何】[CQOI]RGB
- bzoj1257[CQOI]余数之和
- CQOI 2016 day1日志
- CQOI 2016 Day2 日志
- CQOI 2017 省选滚粗日志
- ZYNQ7000-FPGA入门
- Linux操作命令
- zookeeper单节点安装Standalones模式
- ListView等的样式和内容适配器不复用问题
- oracle session
- Easy问题(CQOI)
- mysql触发器+权限管理+备份还原
- thrift入门资料
- Java有序数组
- C++11的特性
- IO 异常:The Network Adapter could not establish the connection 怎么解决
- run gender find mistake
- 利用DrawerLayout实现侧划栏、抽屉
- 【MySQL入门】——MySQL5.6压缩版安装教程