题意:



思路:



//By SiriusRen
#include <cstdio>
#include <bitset>
#include <vector>
using namespace std;
int n,m,q;
char map[505][505],ans[600005];
struct Node{int x1,y1,x2,y2,id;}jy;
vector<Node>vec;
bitset<505>a[505][505],b[505][505];
void solve(int l,int r,vector<Node>v){
int mid=(l+r)>>1,size=v.size();if(!size||l>r)return;
for(int i=mid;i>=l;i--){
for(int j=m;j;j--){
a[i][j].reset();
if(map[i][j]=='#')continue;
if(i==mid)a[i][j][j]=1;
else a[i][j]|=a[i+1][j];
if(j!=m)a[i][j]|=a[i][j+1];
}
}
for(int i=mid;i<=r;i++){
for(int j=1;j<=m;j++){
b[i][j].reset();
if(map[i][j]=='#')continue;
if(i==mid)b[i][j][j]=1;
else b[i][j]|=b[i-1][j];
if(j!=1)b[i][j]|=b[i][j-1];
}
}
vector<Node>v1,v2;
for(int i=0;i<size;i++){
jy=v[i];
if(jy.x2<mid)v1.push_back(jy);
else if(jy.x1>mid)v2.push_back(jy);
else ans[jy.id]=(a[jy.x1][jy.y1]&b[jy.x2][jy.y2]).any();
}
solve(l,mid-1,v1),solve(mid+1,r,v2);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%s",map[i]+1);
scanf("%d",&q);
for(int i=1;i<=q;i++)
jy.id=i,scanf("%d%d%d%d",&jy.x1,&jy.y1,&jy.x2,&jy.y2),vec.push_back(jy);
solve(1,n,vec);
for(int i=1;i<=q;i++)puts(ans[i]?"Yes":"No");
}

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. intelij idea+springMVC+spring+mybatis 初探(持续更新)

    intelij idea+springMVC+spring+mybatis 初探(持续更新) intellij 创建java web项目(maven管理的SSH) http://blog.csdn.n ...

  2. Module, Package in Python

    1.To put it simple, Module是写好的一系列函数或变量,文件以.py为后缀,可以在其他Module中整体或部分引用. PS: 在Module中[结尾或开头]加入if __name ...

  3. 【Oracle】搭建DG(DataGuard)

    操作系统:OEL 5.6 Oracle 版本:11.2.0.4.0 DataGuard规划说明 DATABASE_ROLE DB_NAME IPADDR Primary lgr 192.168.10. ...

  4. MyProject

    [PROJECT_20190101]20371230[PROJECT_20190101]

  5. ObjecT4:On-line multiple instance learning (MIL)学习

    原文链接:http://blog.csdn.net/ikerpeng/article/details/19235391 用到论文,直接看翻译. 文章:Robust object tracking wi ...

  6. profibus

    在研究profibus之前先提出问题,带着问题查看 profibus跟硬件无关?只是软件上的协议复杂? profibus和modbus的区别? 解读: profibus跟硬件关系不大,profibus ...

  7. java中4种修饰符访问权限的区别及详解全过程

    java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...

  8. php常用方法一

    1.用户名用***替换 /** * 用户名中间用***替换 * @param string $str 需要替换的字符串 * @param int $len 需要替换的位数 * @param strin ...

  9. anuglar.js ui-router传递参数

    anuglar.js ui-router 传递参数的方法有: 一: ui-sref 传递参数,传递一个参数的时候 首先路有这样写: .state('edit', { //线路编辑页面 url: '/e ...

  10. forEach 列出数组的每个元素:

    数组.forEach便利所有的元素 array.forEach(function(currentValue, index, arr), thisValue) function(currentValue ...