当前位置:网站首页>Luogu: P2574 XOR的艺术 [线段树]
Luogu: P2574 XOR的艺术 [线段树]
2022-08-05 08:11:00 【9ack!?】
题目
题目给出一串01组成的字符串,有多种操作,可以对指定的区间的01进行翻转,也可以询问指定区间的01串中有多少个1。这道题也挺基本,相对上一个题来说只是多了一个维护标记的操作。
代码
#include <cstdio>
using namespace std;
#define lc k<<1
#define rc k<<1|1
const int maxn = 3e5+5;
int f[maxn<<2], a[maxn];
bool v[maxn<<2];
inline void build_tree(int k, int l, int r) {
v[k] = 0;
if(l == r) {
f[k] = a[l]; return; }
int m = (l+r) >> 1;
build_tree(lc, l, m);
build_tree(rc, m+1, r);
f[k] = f[lc]+f[rc];
}
inline void push_down(int k, int l, int r) {
int m = (l+r) >> 1;
if(v[k]) {
v[lc] ^= 1;
v[rc] ^= 1;
v[k] = 0;
f[lc] = (m-l+1)-f[lc];
f[rc] = (r-m)-f[rc];
}
}
inline void update(int k, int l, int r, int x, int y) {
push_down(k, l, r);
if(l == x && r == y) {
v[k] ^= 1;
f[k] = r-l+1-f[k];
return;
}
int m = (l+r) >> 1;
if(y <= m) {
update(lc, l, m, x, y);
} else if(x > m) {
update(rc, m+1, r, x, y);
} else {
update(lc, l, m, x, m);
update(rc, m+1, r, m+1, y);
}
f[k] = f[lc] + f[rc];
}
inline int query(int k, int l, int r, int x, int y) {
if(l == x && r == y) {
return f[k]; }
push_down(k, l, r);
/* if(v[k]) { v[lc] ^= 1; v[rc] ^= 1; v[k] = 0; } */
int m = (l+r) >> 1;
int ans;
if(y <= m)
ans = query(lc, l, m, x, y);
else if(x > m)
ans = query(rc, m+1, r, x, y);
else ans = query(lc, l, m, x, m) + query(rc, m+1, r, m+1, y);
f[k] = f[lc] + f[rc];
return ans;
}
int n, m;
int main(void)
{
/* freopen("in.txt", "r", stdin); */
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) {
scanf(" %1d", &a[i]);
}
build_tree(1, 1, n);
int op, x, y;
while(m--) {
scanf("%d%d%d", &op, &x, &y);
if(op == 1) {
printf("%d\n", query(1, 1, n, x, y));
} else {
update(1, 1, n, x, y);
}
}
return 0;
}
边栏推荐
猜你喜欢

SVG大鱼吃小鱼动画js特效

关于MP3文件中找不到TAG标签的问题

Jmeter永久设置中文界面

egg框架中解决跨域的三种方案

【结构体内功修炼】结构体内存对齐(一)

ps怎么拼图,自学ps软件photoshop2022,PS制作拼图效果

unity urp 渲染管线顶点偏移的实现

Data source object management Druid and c3p0

What is a good movie to watch on Qixi Festival?Crawl movie ratings and save to csv file

uniapp time component encapsulates year-month-day-hour-minute-second
随机推荐
嵌入式系统:基本定时器
Beautifully painted MM set
Antdesign a-select 下拉框超出长度换行显示
行业应用软件项目经理三步曲
The color of life divine
Qt编写自定义控件:文字聚光灯效果之一
ps怎么拼图,自学ps软件photoshop2022,PS制作拼图效果
SVG星球大战样式Toggle切换开关按钮
Version number naming convention
DNS 查询原理详解
力扣刷题八月第一天
爬虫之验证码
Fiddler工具讲解
MVCC of Google's Fragmented Notes (Draft)
星座理想情人
请问my sql如何把两个表的内容集合在一起啊?
[Untitled] Long-term recruitment of hardware engineers-Shenzhen Baoan
最 Cool 的 Kubernetes 网络方案 Cilium 入门教程
控制器-----controller
SVG大鱼吃小鱼动画js特效