HDU 5480 Conturbatio (象棋_找规律)
2015-09-28 15:16
316 查看
问题描述
输入描述
输出描述
输入样例
输出样例
Hint
在一个n \times mn×m的国际象棋棋盘上有很多车(Rook),其中车可以攻击他所属的一行或一列,包括它自己所在的位置。 现在还有很多询问,每次询问给定一个棋盘内部的矩形,问矩形内部的所有格子是否都被车攻击到?
输入描述
输入文件包含多组数据,第一行为数据组数TT。 每组数据有4个正整数n , m , K , Qn,m,K,Q。 KK为车的数量,QQ为询问的个数。 接下来有KK行,每行两个整数x , yx,y , 表示车所在的坐标。 再接下来有QQ行,每行4个整数x1 , y1 , x2 , y2x1,y1,x2,y2,表示询问的矩形的左下角与右上角的坐标。 1\leq n , m , K , Q \leq 100,0001≤n,m,K,Q≤100,000. 1\leq x \leq n , 1 \leq y \leq m1≤x≤n,1≤y≤m. 1\leq x1 \leq x2 \leq n , 1 \leq y1 \leq y2 \leq m1≤x1≤x2≤n,1≤y1≤y2≤m.
输出描述
对于每组询问,输出Yes或No。
输入样例
2 2 2 1 2 1 1 1 1 1 2 2 1 2 2 2 2 2 1 1 1 1 2 2 1 2 2
输出样例
Yes No Yes
Hint
输入数据过大,建议使用scanf
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1e5+100; int x[maxn],y[maxn]; int xx[maxn],yy[maxn]; int main() { int t,n,m,k,q,l,r,ll,rr; int i,j; scanf("%d",&t); while(t--) { memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); memset(xx,0,sizeof(xx)); memset(yy,0,sizeof(yy)); scanf("%d%d%d%d",&n,&m,&k,&q); while(k--) { scanf("%d%d",&l,&r); x[l]=1; y[r]=1; } for(i=1;i<=n;i++) xx[i]=xx[i-1]+x[i]; for(i=1;i<=m;i++) yy[i]=yy[i-1]+y[i]; while(q--) { scanf("%d%d%d%d",&l,&r,&ll,&rr); if(xx[ll]-xx[l-1]==ll-l+1 || yy[rr]-yy[r-1]==rr-r+1) printf("Yes\n"); else printf("No\n"); } } return 0; }
相关文章推荐
- 回家前的随笔
- OnScrollListener回调分析
- 错误和异常(Errors and Exceptions)
- 虚函数
- BA--干球温度、露点温度和湿球温度--概念
- 二叉树中和为某一值的路径
- HTTP制作代理服务器
- MPLS 标签模式/分发行为/保留模式/标签空间
- Android下抓包工具
- Eclipse设置默认文件的打开程序
- 给网址结尾加上反斜杠
- 子集合(算法)
- Linux下安装Yii2.0
- 输入输出(Input and Output)
- 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
- iOS-多线程(2)
- JavaScript高级程序设计之面向对象的程序设计之继承之寄生组合式继承第6.3.6讲笔记
- 聚类算法之GMM聚类算法
- PL/SQL连接oracle配置
- Android学习笔记