博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luogu P3801 红色的幻想乡
阅读量:5092 次
发布时间:2019-06-13

本文共 2943 字,大约阅读时间需要 9 分钟。

二次联通门 : 

 

 

 

 

/*    luogu P3801 红色的幻想乡    两颗线段树        分别维护 X方向和Y方向        操作1就是异或1        操作2用容斥搞一搞就好 */#include 
void read (int &now){ now = 0; register char word = getchar (); while (word < '0' || word > '9') word = getchar (); while (word >= '0' && word <= '9') { now = now * 10 + word - '0'; word = getchar (); }}struct S_D { S_D *Left, *Right; int key; int Mid; int l, r; S_D (int __l, int __r) : l (__l), r (__r), key (0) { Mid = (__l + __r) >> 1; Left = Right = NULL; }; S_D () {}; inline void Updata () { this->key = this->Left->key + this->Right->key; }};class Segment_Tree_Type{ private : S_D *Root; void __Build_ (S_D *&now, int l, int r) { now = new S_D (l, r); if (l == r) return ; __Build_ (now->Left, l, now->Mid); __Build_ (now->Right, now->Mid + 1, r); now->Updata (); } int Query (S_D *&now, int l, int r) { if (l <= now->l && now->r <= r) return now->key; register int res = 0; if (l <= now->Mid) res += Query (now->Left, l, r); if (r > now->Mid) res += Query (now->Right, l, r); return res; } void __Change_ (S_D *&now, int pos) { if (now->l == now->r) { now->key ^= 1; return ; } if (pos <= now->Mid) __Change_ (now->Left, pos); else __Change_ (now->Right, pos); now->Updata (); } public : inline void Build (int l, int r) { __Build_ (Root, l, r); return ; } inline void Change (int pos) { __Change_ (Root, pos); return ; } inline int Query (int l, int r) { return Query (Root, l, r); }};Segment_Tree_Type X, Y;int main (int argc, char *argv[]){ int M, N, x, y; read (N); read (M); X.Build (1, N); Y.Build (1, M); int type, Q; int _x, _y; long long now_1, now_2; for (read (Q); Q --; ) { read (type); read (x); read (y); if (type == 1) { X.Change (x); Y.Change (y); } else { read (_x); read (_y); now_1 = X.Query (x, _x); now_2 = Y.Query (y, _y); printf ("%lld\n", now_1 * (long long) (_y - y + 1) + now_2 * (long long) (_x - x + 1) - now_1 * now_2 * 2LL); } } return 0;}

 

转载于:https://www.cnblogs.com/ZlycerQan/p/7078103.html

你可能感兴趣的文章
POJ 3259 Wormholes
查看>>
关于公司满意度调查的一点建议
查看>>
考满分软件测试工程师(实习)面试&软达启航面试
查看>>
20130729
查看>>
Petrozavodsk Winter-2018. Carnegie Mellon U Contest
查看>>
nginx 启动报错 “/var/run/nginx/nginx.pid" failed” 解决方法
查看>>
20、自动装配-@Autowired&@Qualifier&@Primary
查看>>
BUG(0):用某位表示特定属性
查看>>
用户态处理arp、ndisc neighbour solication 报文
查看>>
解决Oracle 11gR2 空闲连接过多,导致连接数满的问题
查看>>
vue.js学习笔记1——安装及创建并运行vue实例
查看>>
maven项目的创建
查看>>
struts2自定义拦截器
查看>>
项目期复习:JS操作符,弹窗与调试,凝视,数据类型转换
查看>>
jQuery.extend()、jQuery.fn.extend()扩展方法具体解释
查看>>
基于阿里云的MQTT远程控制
查看>>
作业三
查看>>
osi七层模型
查看>>
Android RxJava
查看>>
c++的准备知识18
查看>>