hdu5480
2015-10-24 21:06
239 查看
题目:点击打开链接
题解:
这道题不能开那么大的二维数组,所以得想个其他办法
可以发现如果一个矩阵被全部攻击到,
很显然要么是因为它的每一行都有车,
或者每一列都有车。
所以只需要记录一下哪些行和哪些列有车
对于每个询问只需要做一个前缀和就可以知道答案了。
题解:
这道题不能开那么大的二维数组,所以得想个其他办法
可以发现如果一个矩阵被全部攻击到,
很显然要么是因为它的每一行都有车,
或者每一列都有车。
所以只需要记录一下哪些行和哪些列有车
对于每个询问只需要做一个前缀和就可以知道答案了。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; int a[100001],b[100001]; int main() { int t; int n,m,k,q; int x,y,x1,y1,x2,y2; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); scanf("%d%d%d%d",&n,&m,&k,&q); while(k--) { scanf("%d%d",&x,&y); a[x]=1; b[y]=1; } for(int i=1;i<=n;i++) a[i]+=a[i-1];//每一行代表包括自己的前几行的和 for(int j=1;j<=m;j++) b[j]+=b[j-1]; while(q--) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(a[x2]-a[x1-1]==x2-x1+1||b[y2]-b[y1-1]==y2-y1+1)//只要行全部包括或者列全部包括就可以全部覆盖 printf("Yes\n"); else printf("No\n"); } } return 0; }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/6bb3f2a2eb81f326445a31770403c7f1.gif)
相关文章推荐
- 从0开始<九> 字符串相关:grep函数的简单实现
- JavaScript Object类型 小抄
- BZOJ 4287(慎二的随机数列-构造+LIS)
- startActivityForResult和setResult详解
- [POJ2084]Game of Connections
- 不要复制粘贴,重新敲一遍
- 新的开始
- Android学习(1)——接收和发送短信
- 用只含一个链域的节点实现循环链表的双向遍历
- [HDOJ5444]Elven Postman
- codeforces Line 7C (拓展欧几里德+思想 模板) 好题
- 采用TCP协议实现ethernet bootloader
- 2015 Fall HIT Weekly Training 2
- 什么是cookie
- 《需求工程——软件建模与分析》——阅读笔记二
- 手把手带你理解style
- “利益相关者”课堂讨论电子版
- rtp协议分析
- 2015_10_24
- LeetCode52——N-Queens II