1230: [Usaco2008 Nov]lites 开关灯
来源:互联网 发布:js自动轮播代码 编辑:程序博客网 时间:2024/05/16 19:10
题目链接
题目大意:维护01序列,支持区间亦或,求区间和
题解:线段树+标记就好了
我的收获:……
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std; #define M 100005#define ls x<<1#define rs x<<1|1#define lson l,m,x<<1#define rson m+1,r,x<<1|1#define root 1,n,1 int n,m,sum[M<<2],rev[M<<2]; inline void pushup(int x){sum[x]=sum[ls]+sum[rs];} void pushdown(int x,int m){ if(!rev[x]) return ; rev[ls]^=1,rev[rs]^=1; sum[ls]=(m-(m>>1))-sum[ls];//区间长度-原值 sum[rs]=(m>>1)-sum[rs]; rev[x]=0;} void build(int l,int r,int x){ rev[x]=0; if(l==r){sum[x]=0;return ;} int m=(l+r)>>1; build(lson);build(rson); pushup(x);} void updata(int L,int R,int l,int r,int x){ if(L<=l&&r<=R){rev[x]^=1,sum[x]=(r-l+1)-sum[x];return ;} pushdown(x,r-l+1); int m=(l+r)>>1; if(L<=m) updata(L,R,lson); if(R>m) updata(L,R,rson); pushup(x);} int query(int L,int R,int l,int r,int x){ if(L<=l&&r<=R) return sum[x]; pushdown(x,r-l+1); int m=(l+r)>>1,ans=0; if(L<=m) ans+=query(L,R,lson); if(R>m) ans+=query(L,R,rson); return ans;} void work(){ int opt,l,r; while(m--) { scanf("%d%d%d",&opt,&l,&r); if(opt==0) updata(l,r,root); if(opt==1) printf("%d\n",query(l,r,root)); }} void init(){ cin>>n>>m; build(root);} int main(){ init(); work(); return 0;}
阅读全文
0 0
- BZOJ 1230: [Usaco2008 Nov]lites 开关灯
- 1230: [Usaco2008 Nov]lites 开关灯
- BZOJ 1230: [Usaco2008 Nov]lites 开关灯
- BZOJ 1230: [Usaco2008 Nov]lites 开关灯
- 1230: [Usaco2008 Nov]lites 开关灯
- bzoj 1230: [Usaco2008 Nov]lites 开关灯
- BZOJ 1230: [Usaco2008 Nov]lites 开关灯 线段树
- bzoj1230[Usaco2008 Nov]lites 开关灯
- 【bzoj1230】[Usaco2008 Nov]lites 开关灯
- bzoj1230[Usaco2008 Nov]lites 开关灯 线段树lazy标记
- [Usaco2008 Nov]lites 开关灯 线段树 区间异或及求和操作
- 线段树——Luogu3870/BZOJ1230 [Usaco2008 Nov]lites 开关灯
- BZOJ 1230 Usaco2008 Nov 开关灯 线段树
- 【USACO 2008 Nov Gold】 3.Light Switching(lites 开关灯) 区间修改线段树
- bzoj1230[Usaco2008 Nov]&&[TJOI2009]开关灯(线段树)
- bzoj 1230 lites 开关灯 线段树巧妙应用
- usaco 2008 月赛 lites 开关灯 题解
- bzoj1618[Usaco2008 Nov]Buying Hay 购买干草
- python 读取摄像头数据并保存
- 如何获得变量和返回参数的类型(上篇)
- 俄罗斯方块(C++)
- ZOJ3881:From the ABC conjecture(莫比乌斯反演)
- 华为面试题一例
- 1230: [Usaco2008 Nov]lites 开关灯
- MVC4-View(视图)
- jQuery
- 通过ajax Excel导入
- Maven--本地中央厂库配置
- mac book air 安装win10
- ubuntu 下 配置nfs服务
- 【JVM】Java内存区域与OOM
- 微信扫码登录网页实现原理