VK Cup 2015 - Round 1 E. Rooks and Rectangles 线段树 定点修改,区间最小值
E. Rooks and Rectangles
Time Limit: 1 Sec Memory Limit: 256 MB
题目连接
http://codeforces.com/problemset/problem/524/E
Description
Input
Output
Sample Input
1 1
3 2
2 3
2 3 2 3
2 1 3 3
1 2 2 3
Sample Output
YES
NO
HINT
Picture to the sample: For the last area the answer is "NO", because cell (1, 2) cannot be hit by a rook.
题意
题解:
维护两个数据结构分别表示前i行里第几列是否被覆盖到和前i列里第j行是否被覆盖到
代码:
//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 500001
#define mod 10007
#define eps 1e-9
//const int inf=0x7fffffff; //无限大
const int inf=0x3f3f3f3f;
/*
inline ll read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
int buf[10];
inline void write(int i) {
int p = 0;if(i == 0) p++;
else while(i) {buf[p++] = i % 10;i /= 10;}
for(int j = p-1; j >=0; j--) putchar('0' + buf[j]);
printf("\n");
}
*/
//**************************************************************************************
int a[maxn],n,m,k,q;;
struct node
{
int x,y;
};
node p[maxn];
struct pp
{
int x1,y1,x2,y2,id;
};
pp que[maxn]; void updata(int xx, int L, int R, int x, int val)
{
if(L==R)
{
a[xx]=val;
return;
}
int M=(L+R)>>;
if(x <= M)
updata(xx*,L,M,x,val);
else
updata(xx*+,M+,R,x,val);
a[xx]=min(a[xx*], a[xx*+]);
}
int query(int x, int L, int R, int l, int r)
{
if(l<=L&&R<=r)
return a[x];
int M=(L+R)>>;
if(r<=M)
return query(x*,L,M,l,r);
else if(l>M)
return query(x*+,M+,R,l,r);
else
return min(query(x*,L,M,l,r), query(x*+,M+,R,l,r));
}
bool cmp(node x,node y)
{
return x.x<y.x;
}
bool cmp1(pp x,pp y)
{
return x.x2<y.x2;
}
int ans[maxn];
void solve()
{
memset(a,,sizeof(a));
int pic=;
for(int i=;i<q;i++)
{
while(pic<k&&p[pic].x<=que[i].x2)
{
updata(,,m,p[pic].y,p[pic].x);
pic++;
}
if(query(,,m,que[i].y1,que[i].y2)>=que[i].x1)
ans[que[i].id]=;
}
}
void change()
{
swap(n,m);
for(int i=;i<k;i++)
swap(p[i].x,p[i].y);
sort(p,p+k,cmp);
for(int i=;i<q;i++)
{
swap(que[i].x1,que[i].y1);
swap(que[i].x2,que[i].y2);
}
sort(que,que+q,cmp1);
}
int main()
{ scanf("%d%d%d%d",&n,&m,&k,&q);
for(int i=;i<k;i++)
scanf("%d%d",&p[i].x,&p[i].y);
sort(p,p+k,cmp);
for(int i=;i<q;i++)
{
scanf("%d%d%d%d",&que[i].x1,&que[i].y1,&que[i].x2,&que[i].y2);
que[i].id=i;
}
sort(que,que+q,cmp1);
solve();
change();
solve();
for(int i=;i<q;i++)
{
if(ans[i])
puts("YES");
else
puts("NO");
}
}
VK Cup 2015 - Round 1 E. Rooks and Rectangles 线段树 定点修改,区间最小值的更多相关文章
- VK Cup 2015 - Round 1 -E. Rooks and Rectangles 线段树最值+扫描线
题意: n * m的棋盘, k个位置有"rook"(车),q次询问,问是否询问的方块内是否每一行都有一个车或者每一列都有一个车? 满足一个即可 先考虑第一种情况, 第二种类似,sw ...
- Codeforces Round VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM 暴力出奇迹!
VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E. The Art of Dealing with ATM Time Lim ...
- VK Cup 2015 - Round 2 (unofficial online mirror, Div. 1 only) E. Correcting Mistakes 水题
E. Correcting Mistakes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset ...
- VK Cup 2015 - Round 2 (unofficial online mirror, Div. 1 only) B. Work Group 树形dp
题目链接: http://codeforces.com/problemset/problem/533/B B. Work Group time limit per test2 secondsmemor ...
- VK Cup 2015 - Round 2 E. Correcting Mistakes —— 字符串
题目链接:http://codeforces.com/contest/533/problem/E E. Correcting Mistakes time limit per test 2 second ...
- Codeforces 524E Rooks and Rectangles 线段树
区域安全的check方法就是, 每行都有哨兵或者每列都有哨兵,然后我们用y建线段树, 维护在每个y上的哨兵的x的最值就好啦. #include<bits/stdc++.h> #define ...
- VK Cup 2012 Round 3 (Unofficial Div. 2 Edition)
VK Cup 2012 Round 3 (Unofficial Div. 2 Edition) 代码 VK Cup 2012 Round 3 (Unofficial Div. 2 Edition) A ...
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) 菜鸡只会ABC!
Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) 全场题解 菜鸡只会A+B+C,呈上题解: A. Bear and ...
- HDU 5475(2015 ICPC上海站网络赛)--- An easy problem(线段树点修改)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5475 Problem Description One day, a useless calculato ...
随机推荐
- 福建工程学院寒假作业第三周B题
第二集 你说,你的女朋友就是你的电脑 TimeLimit:2000ms MemoryLimit:128000KB 64-bit integer IO format:%lld Problem De ...
- 【过滤器】web中过滤器的使用与乱码问题解决
一.过滤器Filter 1.filter的简介 filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目 标资源访问前后进行逻辑处理 2.快速入门 步骤: 1)编写一个过 ...
- kvm命令参数记录
/usr/libexec/qemu-kvm -cpu host -m 1024 -enable-kvm -drive file=/var/lib/libvirt/images/zxc_linux1.i ...
- Deep Learning基础--理解LSTM网络
循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有 ...
- C基础 time.h 简单思路扩展
前言 - time 简单需求 时间业务相关代码. 基本属于框架的最底层. 涉及的变动都很小. 以前参与游戏研发时候, 这方面需求不少, 各种被策划花式吊打. 转行开发互联网服务之后很少遇到这方面需求. ...
- 升级vs17中的cordova-simulate
visual studio 17自带的cordova-simulate有一个bug,动态添加的html代码里面如果带有header,会出现js异常导致后面js程序终止执行,这个问题已经给他们提了iss ...
- Django项目上传到AWS服务器上
EC2是亚马逊(Amazon.com)提供的弹性云计算服务:Apache是一个跨平台的Web服务器端软件,可以使Python.PHP.Perl等语言编写的程序运行在服务器上:Django是一个Web程 ...
- Redis 常见面试题
使用Redis有哪些好处? 速度快 基于内存,避免了磁盘I/O的瓶颈. 单进程单线程,减少了线程上下文切换的开销 利用队列技术将并行访问变为串行访问,消除了传统数据库并发访问控制锁的开销. Redis ...
- Sublime Text 2.0.2,Build 2221注册码
Help ->Enter License,输入如下序列号: ----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855 ...
- MINIBASE源代码阅读笔记之heapfile
Heapfile 用来管理heap file里的dir page们 成员 _firstDirPageId:这个文件的第一个dir page _ftype:文件类型 _file_deleted:删除的时 ...