洛谷 红魔馆OI 红色的幻想乡 [线段树]
来源:互联网 发布:2017年淘宝测黑号 编辑:程序博客网 时间:2024/05/01 12:11
题目传送门
我想到了两片红雾会抵消,相当于每次修改,对应行^=1,对应列^=1。
但是没有想到可以建立两棵线段树分别维护每行,每列有没有释放过红雾。
于是沙茶地建了个树套树+cdq分治光荣WA。
//直接上标答#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long long#define lson (rt<<1)#define rson ((rt<<1)|1)#define mid ((l+r)>>1)using namespace std;int sumx[400011],sumy[400011];int n,m,q,op,px1,py1,px2,py2;void insx(int rt,int l,int r,int x){ if(l==r) { sumx[rt]^=1; return; } if(x<=mid)insx(lson,l,mid,x); else insx(rson,mid+1,r,x); sumx[rt]=sumx[lson]+sumx[rson];}int quex(int rt,int l,int r,int L,int R){ if(L<=l&&r<=R)return sumx[rt]; if(mid+1>R)return quex(lson,l,mid,L,R); if(L>mid)return quex(rson,mid+1,r,L,R); return quex(lson,l,mid,L,R)+quex(rson,mid+1,r,L,R);}void insy(int rt,int l,int r,int x){ if(l==r) { sumy[rt]^=1; return; } if(x<=mid)insy(lson,l,mid,x); else insy(rson,mid+1,r,x); sumy[rt]=sumy[lson]+sumy[rson];}int quey(int rt,int l,int r,int L,int R){ if(L<=l&&r<=R)return sumy[rt]; if(mid+1>R)return quey(lson,l,mid,L,R); if(L>mid)return quey(rson,mid+1,r,L,R); return quey(lson,l,mid,L,R)+quey(rson,mid+1,r,L,R);}int main(){ scanf("%d%d%d",&n,&m,&q); while(q--) { scanf("%d%d%d",&op,&px1,&py1); if (op==1) { insx(1,1,n,px1); insy(1,1,m,py1); } else { scanf("%d%d",&px2,&py2); ll n1=quex(1,1,n,px1,px2),m1=quey(1,1,m,py1,py2); printf("%lld\n",n1*(ll)(py2-py1+1)+m1*(ll)(px2-px1+1)-n1*m1*2LL); } }}
阅读全文
1 0
- 洛谷 红魔馆OI 红色的幻想乡 [线段树]
- 讲课:OI中实用的结构——线段树
- bzoj3924 幻想乡战略游戏【树链剖分+线段树】
- Wiki OI 1080 线段树练习
- 【河北OI 2012 DAY1】采花 线段树
- 洛谷 红魔馆OI 妖梦斩木棒
- 【OI之路】06树-1线段树
- 【XSY1537】五颜六色的幻想乡 数学 生成树计数 拉格朗日插值
- 洛谷3345:幻想乡战略游戏(动态树分治)
- 维基oi 1214 线段覆盖
- hihocoder 1145 幻想乡的日常
- bzoj3926诸神眷顾的幻想乡
- BZOJ3925: [Zjoi2015]地震后的幻想乡
- bzoj4596: [Shoi2016]黑暗前的幻想乡
- BZOJ4596 [Shoi2016]黑暗前的幻想乡
- 【ZJOI2015】诸神眷顾的幻想乡
- 【ZJOI2015】诸神眷顾的幻想乡
- 4596: [Shoi2016]黑暗前的幻想乡
- Codeforces Round #310 (Div. 2)-D. Case of Fugitive(贪心)
- 国内物联网平台初探(二):阿里云物联网套件
- Palette调色板
- web项目配置方式
- 经典排序算法(二)--插入排序、希尔排序(Java实现)
- 洛谷 红魔馆OI 红色的幻想乡 [线段树]
- HTC Vive VRTK入门之瞬移二设定瞬移区域的三种方法(再入桃花源)
- Linux中rz与sz命令的使用
- Codevs 1031 质数环
- 大数相乘
- 程序员两方面相论
- Robomongo bug:执行aggregate最多只返回50个文档
- JavaWeb: Tomcat优化
- Linux Kernel 学习笔记16:总线设备驱动模型