EOJ 2525 Light Switching

news/2025/2/2 4:35:39/

http://acm.cs.ecnu.edu.cn/problem.php?problemid=2525

题意:给一排灯操作,0,s, e表示改变编号从s到e的灯的状态,1,s,e表示查询编号s到e的亮的盏数。

线段树,查询区间,更新区间。

#include <stdio.h>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
#define ls(p) p << 1 
#define rs(p) p << 1 | 1
const int maxn = 100005;
struct tree
{int l,r;int sum;int col;
}t[maxn<<2];
void pushup(int p){t[p].sum = t[ls(p)].sum + t[rs(p)].sum;
}void pushdown(int p){if(t[p].col){t[ls(p)].col ^= 1;t[rs(p)].col ^= 1;t[ls(p)].sum = t[ls(p)].r - t[ls(p)].l + 1 - t[ls(p)].sum;t[rs(p)].sum = t[rs(p)].r - t[rs(p)].l + 1 - t[rs(p)].sum;t[p].col = 0;}
}
void build(int l, int r, int p)
{t[p].l = l;t[p].r = r;t[p].sum = 0;t[p].col = 0;if(l == r)return;int m = (l+r)>>1;build(l,m,ls(p));build(m+1,r,rs(p));
}void update(int p, int L, int R)
{int l = t[p].l;int r = t[p].r;if(L <= l && r <= R){t[p].sum = r - l + 1 - t[p].sum;t[p].col ^= 1;return;}pushdown(p);int m = (l + r) >> 1;if(L <= m)update(ls(p), L, R);if(R > m)update(rs(p), L, R);pushup(p);
}int query(int L,int R,int p) {int l = t[p].l;int r = t[p].r; if (L <= l && r <= R) {return t[p].sum;}pushdown(p);int m = (l + r) >> 1;int ret = 0;if(L <= m)ret += query(L , R , ls(p));if(R > m)ret += query(L , R , rs(p));return ret;
}int main()
{int n,m;while(~scanf("%d%d",&n,&m)){build(1,n,1);while(m --){int op,s,e;scanf("%d%d%d",&op,&s,&e);if(op == 0){update(1, s, e);}else{int ans = query(s,e,1);printf("%d\n",ans);}}}return 0;
}


 


http://www.ppmy.cn/news/345960.html

相关文章

【Delphi】Delphi11.1 版本 Android SDK 更新步骤

最近&#xff0c;在Delphi官网下载的Delphi 11.1最新试用版本&#xff0c;安装后发现Android SDK的版本是25.2.5。编译Android程序32位没有问题&#xff0c;但是编译64位的时候出现错误&#xff0c;提示说&#xff1a;C:\Users\Mac\AppData\Roaming\Embarcadero\BDS\22.0\Andro…

Delphi 10.4.2 CE 社区版支持 Android API-30,之二

前情回顾 话说直接修改程序项目的 AndroidManifest.template.xml&#xff0c;将 API-level 从通配符改为写死的 30 后&#xff0c;可以编译发布出 AAB 文件&#xff0c;而且这个 AAB 文件上传到 Google play 它没提示 API-level 是 29 不合格&#xff0c;算是通过了。但是&am…

网络套接字编程

之前我们粗浅的认识了一下网络的一些知识&#xff0c;比如OSI七层模型&#xff0c;TCP/IP四层模型&#xff0c;那么我们具体怎么实现两台主机的交互呢&#xff1f; 在学习这些之前&#xff0c;我们需要准备一些预备知识。 目录 预备知识 1:认识源IP地址和目的IP地址 2&…

Linux环境下,使用ssh测试TCP端口是否开放

在工作中&#xff0c;一些软硬件的工程师去现场安装软件后&#xff0c;发现出现各种异常&#xff0c;然后忙前忙后排查&#xff0c;最后才发现原来是现场的防火墙端口没有开放。 其实网络上也有很多排查端口是否开放的方法&#xff0c;我这里只写一下咱们怎么在Linux操作系统之…

ArcGIS距离分析—规划最低成本路径

先给自己搞一个存放操作结果的数据库&#xff0c;然后把它设置为临时存放操作结果的位置。 把用到的数据加载进来&#xff1a;起点、终点、DEM、土地分类数据。 计算成本数据&#xff1a;包括重分类的坡度、起伏度数据。 首先使用DEM数据生成坡度数据。 坡度数据的像元大小…

zzuli 2525: 咕咕的搜索序列(dfs合法序列)

2525: 咕咕的搜索序列 时间限制: 1 Sec 内存限制: 128 MB 提交: 371 解决: 40 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 咕咕已经学到树上的深度优先搜索 (dfs) 啦&#xff01;由于同一棵树不同的 dfs 访问结点的次序不一样&#xff0c;咕咕干脆定义 了一个搜索序列…

分布式架构之EasyES---和 Mybatis用法相似,太方便了

一、EasyES是什么&#xff1f; Easy-Es&#xff08;简称EE&#xff09;是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架&#xff0c;在 RestHighLevelClient 的基础上,只做增强不做改变&#xff0c;为简化开发、提高效率而生,您如果有用过Myb…