题目链接:http://codeforces.com/contest/869/problem/E

题解:这题是挺好想到solution的但是不太好写,由于题目的特殊要求每个矩形不会重贴所以只要这两个点最内抱着他们的是同一个矩形就行了。就是最近抱汉她们的矩形是同一个就行了。有一种方法挺好的主要是数据是大多数随机的,所以可以考虑hash一下rand一下每个点的赋值然后求前缀和相同就是满足条件的,这里可以用一下2维德树状数组做一下。seed尽量大点这样失败的概率也就小点官方题解有详细的概率数据可以参考一下。然后就这样了........

#include <iostream>
#include <cstring>
#include <cstdio>
#include <map>
using namespace std;
const int M = + ;
typedef unsigned long long ll;
pair<ll , ll> mmp[M][M];
pair<ll , ll> nub[M][M];
void add(int x , int y , pair<int , int> num) {
for(int i = x ; i <= ; i += (i & (-i))) {
for(int j = y ; j <= ; j += (j & (-j))) {
nub[i][j].first += num.first;
nub[i][j].second += num.second;
}
}
}
pair<ll , ll> query(int x , int y) {
pair<ll , ll> res;
for(int i = x ; i ; i -= (i & (-i))) {
for(int j = y ; j ; j -= (j & (-j))) {
res.first += nub[i][j].first;
res.second += nub[i][j].second;
}
}
return res;
}
int main() {
int n , m , q;
int t , r1 , c1 , r2 , c2;
scanf("%d%d%d" , &n , &m , &q);
srand(( << ));
pair<ll , ll> ad , rd;
while(q--) {
scanf("%d%d%d%d%d" , &t , &r1 , &c1 , &r2 , &c2);
if(t == ) {
ad.first = mmp[r1][c1].first = rand();
ad.second = mmp[r1][c1].second = rand();
rd.first = -ad.first;
rd.second = -ad.second;
add(r1 , c1 , ad);
add(r2 + , c1 , rd);
add(r1 , c2 + , rd);
add(r2 + , c2 + , ad);
}
if(t == ) {
rd = mmp[r1][c1];
ad.first = -rd.first;
ad.second = -rd.second;
add(r1 , c1 , ad);
add(r2 + , c1 , rd);
add(r1 , c2 + , rd);
add(r2 + , c2 + , ad);
mmp[r1][c1] = make_pair( , );
}
if(t == ) {
ad = query(r1 , c1);
rd = query(r2 , c2);
if(ad == rd) printf("Yes\n");
else printf("No\n");
}
}
return ;
}

codeforces 869 E. The Untended Antiquity(树状数组)的更多相关文章

  1. Educational Codeforces Round 10 D. Nested Segments (树状数组)

    题目链接:http://codeforces.com/problemset/problem/652/D 给你n个不同的区间,L或者R不会出现相同的数字,问你每一个区间包含多少个区间. 我是先把每个区间 ...

  2. Codeforces Gym 100114 H. Milestones 离线树状数组

    H. Milestones Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Descripti ...

  3. Codeforces - 828E DNA Evolution —— 很多棵树状数组

    题目链接:http://codeforces.com/contest/828/problem/E E. DNA Evolution time limit per test 2 seconds memo ...

  4. Codeforces Gym 100269F Flight Boarding Optimization 树状数组维护dp

    Flight Boarding Optimization 题目连接: http://codeforces.com/gym/100269/attachments Description Peter is ...

  5. Codeforces 570D TREE REQUESTS dfs序+树状数组 异或

    http://codeforces.com/problemset/problem/570/D Tree Requests time limit per test 2 seconds memory li ...

  6. Codeforces 786C Till I Collapse(树状数组+扫描线+倍增)

    [题目链接] http://codeforces.com/contest/786/problem/C [题目大意] 给出一个数列,问对于不同的k,将区间划分为几个, 每个区间出现不同元素个数不超过k时 ...

  7. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  8. Codeforces 216D Spider&#39;s Web 树状数组+模拟

    题目链接:http://codeforces.com/problemset/problem/216/D 题意: 对于一个梯形区域,假设梯形左边的点数!=梯形右边的点数,那么这个梯形为红色.否则为绿色, ...

  9. CodeForces - 369E Valera and Queries(树状数组)

    CodeForces - 369E Valera and Queries 题目大意:给出n个线段(线段的左端点和右端点坐标)和m个查询,每个查询有cnt个点,要求给出有多少条线段包含至少其中一个点. ...

随机推荐

  1. angular6组件通信

    此文章是用markdown书写,赋值全部到vscode打开即可. # Angular组件通信 ## .父组件传递数据到子组件 - `@Input`:属性绑定,父组件向子组件传递数据 ```js // ...

  2. 后台post注入爆密码

    后台登陆框post注入按照注入的方式属于post,和前台搜索型post注入.文本框注入类似,由于目前主流的注 入工具除了穿山甲等较新工具以外几乎都是get注入,尤其是对于这种后台账户型post注入式无 ...

  3. Java的编译原理

    概述 java语言的"编译期"分为前端编译和后端编译两个阶段.前端编译是指把*.java文件转变成*.class文件的过程; 后端编译(JIT, Just In Time Comp ...

  4. lvs+keepalived 高可用及负载均衡

    一.环境准备 VIP:10.18.43.30 dr1:10.18.43.10 dr2:10.18.43.20 web1:10.18.43.13 web2:10.18.43.14 结构图 (一).预处理 ...

  5. bucket list 函数解析

    cls_bucket_list 函数 librados::IoCtx index_ctx; // key   - oid (for different shards if there is any) ...

  6. HelloDjango 系列教程:博客从“裸奔”到“有皮肤”

    文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在此之前我们已经编写了博客的首页视图,并且配置了 URL 和模板,让 django 能够正确地处理 HTTP 请求并返回合适的 ...

  7. Spring Cloud 相关资料链接

    Spring Cloud中文网:https://springcloud.cc/ Spring Cloud API:https://springcloud.cc/spring-cloud-dalston ...

  8. Spark 系列(三)—— 弹性式数据集RDDs

    一.RDD简介 RDD 全称为 Resilient Distributed Datasets,是 Spark 最基本的数据抽象,它是只读的.分区记录的集合,支持并行操作,可以由外部数据集或其他 RDD ...

  9. 关于 java中的换行符

    java中实现换行有以下3种方法: 1.使用java中的转义符"\r\n": String str="aaa"; str+="\r\n"; ...

  10. 转载 | textarea 在浏览器中固定大小和禁止拖动

    HTML 标签 textarea 在大部分浏览器中只要指定行(rows)和列(cols)属性,就可以规定 textarea 的尺寸,大小就不会改变,不过更好的办法是使用 CSS 的 height 和 ...