题意:



思路:



  1. //By SiriusRen
  2. #include <cstdio>
  3. #include <bitset>
  4. #include <vector>
  5. using namespace std;
  6. int n,m,q;
  7. char map[505][505],ans[600005];
  8. struct Node{int x1,y1,x2,y2,id;}jy;
  9. vector<Node>vec;
  10. bitset<505>a[505][505],b[505][505];
  11. void solve(int l,int r,vector<Node>v){
  12. int mid=(l+r)>>1,size=v.size();if(!size||l>r)return;
  13. for(int i=mid;i>=l;i--){
  14. for(int j=m;j;j--){
  15. a[i][j].reset();
  16. if(map[i][j]=='#')continue;
  17. if(i==mid)a[i][j][j]=1;
  18. else a[i][j]|=a[i+1][j];
  19. if(j!=m)a[i][j]|=a[i][j+1];
  20. }
  21. }
  22. for(int i=mid;i<=r;i++){
  23. for(int j=1;j<=m;j++){
  24. b[i][j].reset();
  25. if(map[i][j]=='#')continue;
  26. if(i==mid)b[i][j][j]=1;
  27. else b[i][j]|=b[i-1][j];
  28. if(j!=1)b[i][j]|=b[i][j-1];
  29. }
  30. }
  31. vector<Node>v1,v2;
  32. for(int i=0;i<size;i++){
  33. jy=v[i];
  34. if(jy.x2<mid)v1.push_back(jy);
  35. else if(jy.x1>mid)v2.push_back(jy);
  36. else ans[jy.id]=(a[jy.x1][jy.y1]&b[jy.x2][jy.y2]).any();
  37. }
  38. solve(l,mid-1,v1),solve(mid+1,r,v2);
  39. }
  40. int main(){
  41. scanf("%d%d",&n,&m);
  42. for(int i=1;i<=n;i++)scanf("%s",map[i]+1);
  43. scanf("%d",&q);
  44. for(int i=1;i<=q;i++)
  45. jy.id=i,scanf("%d%d%d%d",&jy.x1,&jy.y1,&jy.x2,&jy.y2),vec.push_back(jy);
  46. solve(1,n,vec);
  47. for(int i=1;i<=q;i++)puts(ans[i]?"Yes":"No");
  48. }

Codeforces 232E - Quick Tortoise bitset+分治的更多相关文章

  1. CodeForces 232E.Quick Tortoise

    John Doe has a field, which is a rectangular table of size n × m. We assume that the field rows are ...

  2. cf232E. Quick Tortoise(分治 bitset dp)

    题意 题目链接 Sol 感觉这个思路还是不错的 #include<bits/stdc++.h> using namespace std; const int MAXN = 501, SS ...

  3. Solution -「CF 232E」Quick Tortoise

    \(\mathcal{Description}\)   Link.   在一张 \(n\times m\) 的网格图中有空格 . 和障碍格 #,\(q\) 次询问,每次查询从 \((x_1,y_1)\ ...

  4. Codeforces 526F Pudding Monsters - CDQ分治 - 桶排序

    In this problem you will meet the simplified model of game Pudding Monsters. An important process in ...

  5. CF232E Quick Tortoise , Fzoj 3118

    这一题由于数据较多,我们考虑离线处理. 分治.对于两个点s,t,如果起点在mid这条横线上方,终点在下方,那么它必定会穿过mid这条线.所以只要s可以到mid上一点x,x可以到t,st就是安全的. 用 ...

  6. Codeforces 833D Red-Black Cobweb [点分治]

    洛谷 Codeforces 思路 看到树上路径的统计,容易想到点分治. 虽然只有一个限制,但这个限制比较麻烦,我们把它拆成两个. 设黑边有\(a\)条,白边有\(b\)条,那么有 \[ 2a\geq ...

  7. Codeforces 1045G AI robots [CDQ分治]

    洛谷 Codeforces 简单的CDQ分治题. 由于对话要求互相看见,无法简单地用树套树切掉,考虑CDQ分治. 按视野从大到小排序,这样只要右边能看见左边就可以保证互相看见. 发现\(K\)固定,那 ...

  8. Codeforces 848C Goodbye Souvenir [CDQ分治,二维数点]

    洛谷 Codeforces 这题我写了四种做法-- 思路 不管做法怎样,思路都是一样的. 好吧,其实不一样,有细微的差别. 第一种 考虑位置\(x\)对区间\([l,r]\)有\(\pm x\)的贡献 ...

  9. Codeforces 938G Shortest Path Queries [分治,线性基,并查集]

    洛谷 Codeforces 分治的题目,或者说分治的思想,是非常灵活多变的. 所以对我这种智商低的选手特别不友好 脑子不好使怎么办?多做题吧-- 前置知识 线性基是你必须会的,不然这题不可做. 推荐再 ...

随机推荐

  1. javascript时间戳转换成yyyy-MM-DD格式

    最近开发中需要和后端进日期和时间传值,前后端约定为时间戳的格式,但是前端展示需要展示成年-月-日的格式.就需要进行日期和时间转换格式.自己总结两个方式就行转换. 一,new Date(时间戳).for ...

  2. Paint、Canvas.1

    Canvas 方法详解 1:translate(float dx, float dy) /**** 移动canvas的原点到(dx,dy),默认为(0,0) */ public void transl ...

  3. 了解权限控制框架shiro 之实际应用.

    Apache Shiro 1.权限控制分为 a.粗粒度 URL 级别权限控制     b.细粒度方法级别权限控制 2.使用shiro进行权限控制主要有四种主要方式 : a. 在程序中 通过 Subje ...

  4. RxSwift源码与模式分析一:基本类

    封装.变换与处理 // Represents a push style sequence. public protocol ObservableType : ObservableConvertible ...

  5. 【seo】title / robots / description / canonical

    1.title title,就是浏览器上显示的那些内容,不仅用户能看到,也能被搜索引擎检索到(搜索引擎在抓取网页时,最先读取的就是网页标题,所以title是否正确设置极其重要. 1)title一般不超 ...

  6. Dynamics 365 CRM 部署 Connected Field Service

    微软 Connected Field Service 是一个提供Azure IoT 和 Dynamics 365 连接的这样一个框架 有两种方式部署CFS, 一种是用IoT Hub PaaS, 一种是 ...

  7. python中if语句的使用

    1.对体重标准的判断 #coding:utf-8 height=170weight=65#weight=height-105if weight<height-105: print '您偏瘦!注意 ...

  8. bzoj 4372: 烁烁的游戏 动态点分治_树链剖分_线段树

    [Submit][Status][Discuss] Description 背景:烁烁很喜欢爬树,这吓坏了树上的皮皮鼠. 题意: 给定一颗n个节点的树,边权均为1,初始树上没有皮皮鼠. 烁烁他每次会跳 ...

  9. Linux设备驱动--块设备(三)之程序设计(转)

    http://blog.csdn.net/jianchi88/article/details/7212701 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数 ...

  10. 【CodeForces 353 A】Domino

    [链接] 我是链接,点我呀:) [题意] [题解] 分类讨论一波 设第一个数组的奇数个数为cnt1 第二个数组的奇数个数为cnt2 显然只有在(cnt1+cnt2)%2==0的情况下. 才可能第一个数 ...