线段树——Luogu3870/BZOJ1230 [Usaco2008 Nov]lites 开关灯
来源:互联网 发布:索尼手机更新软件 编辑:程序博客网 时间:2024/06/05 06:37
题面:Luogu3870 BZOJ1230
首先让我扯淡一会。。。
新高一开学的恐惧。。。
20号开学之后因为一直没有请到晚自修请假来机房的机会一直在教室。。。
还有军训QAQ。。。
今天我总算回到机房啦!!!
回到机房的第一件事当然是先刷道水题啦
回到正题。首先你会发现luogu是TJOI的题。。。其实原题就是usaco月赛题
其实非常简单,其实就是区间翻转操作
所以我们维护一个翻转标记暴力下传就好了啊
没了
#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>#include <iostream>#include <ctime>#include <map>#include <queue>#include <cstdlib>#include <string>#include <climits>#include <set>#include <vector>using namespace std;inline int read(){ int k=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){k=k*10+ch-'0';ch=getchar();} return k*f;}int lt[400010],rt[400010],t[400010],ro[400010],n,m;inline void pushdown(int nod){ if(!ro[nod])return; if(lt[nod]!=rt[nod]){ ro[nod*2]^=1;ro[nod*2+1]^=1; t[nod*2]=rt[nod*2]-lt[nod*2]+1-t[nod*2]; t[nod*2+1]=rt[nod*2+1]-lt[nod*2+1]+1-t[nod*2+1]; }ro[nod]=0;}inline void build(int l,int r,int nod){ lt[nod]=l;rt[nod]=r; if(l==r)return; int mid=l+r>>1; build(l,mid,nod*2);build(mid+1,r,nod*2+1);}inline void xg(int i,int j,int nod){ pushdown(nod); if(lt[nod]>=i&&rt[nod]<=j){ t[nod]=rt[nod]-lt[nod]+1-t[nod];ro[nod]^=1; return; } int mid=lt[nod]+rt[nod]>>1; if(i<=mid)xg(i,j,nod*2);if(j>mid)xg(i,j,nod*2+1); t[nod]=t[nod*2]+t[nod*2+1];}inline int ssum(int i,int j,int nod){ pushdown(nod); if(lt[nod]>=i&&rt[nod]<=j)return t[nod]; int mid=lt[nod]+rt[nod]>>1,ans=0; if(i<=mid)ans+=ssum(i,j,nod*2);if(j>mid)ans+=ssum(i,j,nod*2+1); return ans;}int main(){ n=read();m=read(); build(1,n,1); for(int i=1;i<=m;i++){ int op=read(),x=read(),y=read(); if(op==0)xg(x,y,1); else printf("%d\n",ssum(x,y,1)); } return 0;}
阅读全文
1 0
- 线段树——Luogu3870/BZOJ1230 [Usaco2008 Nov]lites 开关灯
- bzoj1230[Usaco2008 Nov]lites 开关灯 线段树lazy标记
- bzoj1230[Usaco2008 Nov]lites 开关灯
- 【bzoj1230】[Usaco2008 Nov]lites 开关灯
- bzoj1230[Usaco2008 Nov]&&[TJOI2009]开关灯(线段树)
- BZOJ 1230: [Usaco2008 Nov]lites 开关灯 线段树
- [Usaco2008 Nov]lites 开关灯 线段树 区间异或及求和操作
- 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 开关灯 线段树
- 【USACO 2008 Nov Gold】 3.Light Switching(lites 开关灯) 区间修改线段树
- bzoj 1230 lites 开关灯 线段树巧妙应用
- BZOJ1230开关灯
- usaco 2008 月赛 lites 开关灯 题解
- Tomcat |Tomcat启动超时错误
- 创建scott的案例表代码
- acm学习
- mmm bionic avoid debug(fork)
- 算法系列——二叉搜索树和双向链表(剑指offer)
- 线段树——Luogu3870/BZOJ1230 [Usaco2008 Nov]lites 开关灯
- 微信小程序——获取用户unionId
- scala中循环不建议使用while和do...while,而建议使用递归
- Gitbook电子书同步至github
- VS2013+opencv3.3的安装(或自行编译源码)及配置
- hdu 6180 Schedule(贪心)
- kmalloc和vmalloc的区别和联系
- 2017/8/25
- [OpenGL] 网格细分算法 Loop Subdivision