当前位置:网站首页>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;
}
边栏推荐
- CROS and JSONP configuration
- uniapp time component encapsulates year-month-day-hour-minute-second
- 常用的遍历map的方法
- Ethernet Principle
- 爬虫之验证码
- 基于多块信息提取和马氏距离的k近邻故障监测
- 长期招聘嵌入式开发-深圳宝安
- Iptables implementation under the network limited (NTP) synchronization time custom port
- Antdesign a-select 下拉框超出长度换行显示
- 每一个女孩曾经都是一个没有泪的天使
猜你喜欢
随机推荐
EA谈单机游戏:仍是产品组合中极其重要的部分
How Entrepreneurs Attract Venture Capitalists
v-if/v-else根据计算判断是否显示
手机上流行的各类谜语
routing----router
Vulnhub target drone: HA_ NARAK
Random code generation
CROS and JSONP configuration
DataFrame在指定位置插入行和列
学习机赛道加速:请“卷”产品,不要“卷”营销
彩绘漂亮MM集
关于MP3文件中找不到TAG标签的问题
学习笔记14--机器学习在局部路径规划中的应用
【深度学习实践(一)】安装TensorFlow
在ASP控制数字及字母输入
MySQL database error The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
k-nearest neighbor fault monitoring based on multi-block information extraction and Mahalanobis distance
What is a good movie to watch on Qixi Festival?Crawl movie ratings and save to csv file
Nn. Unfold and nn. The fold
DataFrame insert row and column at specified position