Codeforces 232E - Quick Tortoise bitset+分治
题意:
思路:
//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+分治的更多相关文章
- 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 ...
- cf232E. Quick Tortoise(分治 bitset dp)
题意 题目链接 Sol 感觉这个思路还是不错的 #include<bits/stdc++.h> using namespace std; const int MAXN = 501, SS ...
- Solution -「CF 232E」Quick Tortoise
\(\mathcal{Description}\) Link. 在一张 \(n\times m\) 的网格图中有空格 . 和障碍格 #,\(q\) 次询问,每次查询从 \((x_1,y_1)\ ...
- Codeforces 526F Pudding Monsters - CDQ分治 - 桶排序
In this problem you will meet the simplified model of game Pudding Monsters. An important process in ...
- CF232E Quick Tortoise , Fzoj 3118
这一题由于数据较多,我们考虑离线处理. 分治.对于两个点s,t,如果起点在mid这条横线上方,终点在下方,那么它必定会穿过mid这条线.所以只要s可以到mid上一点x,x可以到t,st就是安全的. 用 ...
- Codeforces 833D Red-Black Cobweb [点分治]
洛谷 Codeforces 思路 看到树上路径的统计,容易想到点分治. 虽然只有一个限制,但这个限制比较麻烦,我们把它拆成两个. 设黑边有\(a\)条,白边有\(b\)条,那么有 \[ 2a\geq ...
- Codeforces 1045G AI robots [CDQ分治]
洛谷 Codeforces 简单的CDQ分治题. 由于对话要求互相看见,无法简单地用树套树切掉,考虑CDQ分治. 按视野从大到小排序,这样只要右边能看见左边就可以保证互相看见. 发现\(K\)固定,那 ...
- Codeforces 848C Goodbye Souvenir [CDQ分治,二维数点]
洛谷 Codeforces 这题我写了四种做法-- 思路 不管做法怎样,思路都是一样的. 好吧,其实不一样,有细微的差别. 第一种 考虑位置\(x\)对区间\([l,r]\)有\(\pm x\)的贡献 ...
- Codeforces 938G Shortest Path Queries [分治,线性基,并查集]
洛谷 Codeforces 分治的题目,或者说分治的思想,是非常灵活多变的. 所以对我这种智商低的选手特别不友好 脑子不好使怎么办?多做题吧-- 前置知识 线性基是你必须会的,不然这题不可做. 推荐再 ...
随机推荐
- JavaWeb详细学习路线图
- Java攻城狮学习路线 - 图转自网络.
- Java基础9一面向对象
继承 1.特点 a) 要有一定的层次结构,并且具备可传递性. b) 判断两者之间是否有继承关系通过is-a来判断. c) 子类继承了父类,那么子类就继承了父类中所有的属性和方法,但是父类中的私有属性和 ...
- hdu3926 Hand in Hand 判断同构
因为每个人小朋友只有两只手,所以每个点最多只有2度.图有可能是环.链,以及环和链构成的复杂图. 如何判断两幅图是否相似呢?判断相似是判断两幅图的圈的数量,以及构成圈的点数是否相同.还有判断链的数目和构 ...
- powershell遍历文件夹设置权限,解决文件无法删除的问题。
function set-rights ($path) { $p = Get-Item $path; if ($p.Attributes -eq 'Directory') { foreach ($ch ...
- Linker scripts之SECTIONS
1 Purpose The linker script describes how the sections in the input files should be mapped into the ...
- load 调用的顺序
主要是依赖关系. 调用的顺序 你过去可能会听说过,对于 load 方法的调用顺序有两条规则: 父类先于子类调用 类先于分类调用 这种现象是非常符合我们的直觉的,我们来分析一下这种现象出现的原因. 第一 ...
- Linux的mysql搭建
1.centos7默认安装mariadb数据库 #yum remove mariadb* 2.wget mysql数据库地址 如果是普通用户,请提权 sudo提权 3.yum local ins ...
- 503是一种HTTP状态码。英文名503 Service Unavailable与404(404 Not Found)是同属一种网页状态出错码。前者是服务器出错的一种返回状态,后者是网页程序没有相关的结果后返回的一种状态,需要优化网站的时候通常需要制作404出错页以便网站整体优化。
goldCat1 商城 消息 | 百度首页 新闻网页贴吧知道音乐图片视频地图百科文库 进入词条搜索词条帮助 近期有不法分子冒充官方收费编辑词条,百度百科严正声明:百科词条人人可编辑,词条创建和修改均免 ...
- web service服务是查询QQ用户是否在线
使用php5开发客户端: <?php try { //$client = new SoapClient("HelloService.wsdl",array('encoding ...
- Project Euler 29 Distinct powers( 大整数质因数分解做法 + 普通做法 )
题意: 考虑所有满足2 ≤ a ≤ 5和2 ≤ b ≤ 5的整数组合生成的幂ab: 22=4, 23=8, 24=16, 25=3232=9, 33=27, 34=81, 35=24342=16, 4 ...