[codevs5578][咸鱼]tarjan/结论题
5578 咸鱼
在广袤的正方形土地上有n条水平的河流和m条垂直的河流,发达的咸鱼家族在m*n个河流交叉点都建立了城市。然而,由于河流有单一的流向,而咸鱼们却没有发达的下体,所以只能顺流而下。两两河流之间的流向互不影响。
现在,咸鱼冒险家Sorey决定出发去看看这个世界,但是Sorey担心自己可能被困在某个城市而无法回归自己的家乡。于是Sorey夜观天象,搞清楚了每条河的流向,他想请你帮他判断他的旅途是否会顺利。
第一行一个整数T,表示数据组数(T<=10)
每组数据第一行两个整数n,m,含义如上述
第二行两个整数x,y,表示Sorey的初始坐标(从一开始,x表示所在行,y表示所在列)
下一行n个数,之间用空格间隔,其中第i个表示第i条水平河流的方向,0向左,1向右
下一行m个数,之间用空格间隔,其中第i个表示第i条垂直河流的方向,0向下,1向上
一组数据一行
如果Sorey能到达任何一座城市且不可能被困住的话,输出"Yes.",否则输出"No."(不含引号)
1
4 6
1 1
0 1 0 1
0 1 0 1 0 1
Yes.
样例如图

对于40%的数据n,m<100,T=1;
对于60%的数据n,m<1000;
对于100%的数据2<=n,m<=1000000,1<=x<=n,1<=y<=m;
数据很大,注意读入优化
分析:
“咸鱼们却没有发达的下体”以及Yes后面的句号,槽点还是挺多的。数据范围很大,应该是结论题
推论1:
看这句话“但是Sorey担心自己可能被困在某个城市而无法回归自己的家乡”以及“如果Sorey能到达任何一座城市且不可能被困住的话,输出"Yes.",否则输出"No."(不含引号)”,显然题目要求我们判断是否可以从源点s到任何一个点且可以从任何一个点回到源点s,即任意两点i,j互相可达(i到s,再s到j),所以,要求原图是强连通分量。用tarjan算法即可判断。但是复杂度O(nm),只有60分。
推论2:
我们必须优化到O(n)或以下,考虑特判,看了一下样例发现:只需要最外围是一个环就一定满足,因为从s沿边走就一定可以到外围,在外围绕圈到每一条边的入口即可进去。
推论3:
充分性已证,只需完备性即可:只要最外围不是环,那么四个顶角必然有的只能进不能出,不可能是强连通分量。
现在只需要判断最外围是不是环即可,复杂度O(1),但数据太大,要优化读入,可以用fseek跳过中间部分,用getchar()也能过(偷懒的我用的后者,复杂度O(n+m))
#include<cstdio>
inline int read(){
char c=getchar();
while(c!=''&&c!='') c=getchar();
return c-'';
}
int main(){
int n,m,x,y,a,b,c,d,T;
scanf("%d",&T);
while(T--){
scanf("%d %d %d %d",&n,&m,&x,&y);
a=read();n-=;
while(n--) read();
b=read();c=read();m-=;
while(m--) read();
d=read();
if((a==&&b==&&c==&&d==)||
(a==&&b==&&c==&&d==)) printf("Yes.\n");
else printf("No.\n");
}
return ;
}
[codevs5578][咸鱼]tarjan/结论题的更多相关文章
- BZOJ_1367_[Baltic2004]sequence_结论题+可并堆
BZOJ_1367_[Baltic2004]sequence_结论题+可并堆 Description Input Output 一个整数R Sample Input 7 9 4 8 20 14 15 ...
- [BZOJ3609][Heoi2014]人人尽说江南好 结论题
Description 小 Z 是一个不折不扣的 ZRP(Zealot Round-game Player,回合制游戏狂热玩家), 最近他 想起了小时候在江南玩过的一个游戏. 在过去,人们是要 ...
- 【uoj#282】长度测量鸡 结论题
题目描述 给出一个长度为 $\frac{n(n+1)}2$ 的直尺,要在 $0$ 和 $\frac{n(n+1)}2$ 之间选择 $n-1$ 个刻度,使得 $1\sim \frac{n(n+1)}2$ ...
- 【uoj#175】新年的网警 结论题+Hash
题目描述 给出一张 $n$ 个点 $m$ 条边的无向连通图,每条边的边权为1.对于每个点 $i$ ,问是否存在另一个点 $j$ ,使得对于任意一个不为 $i$ 或 $j$ 的点 $k$ ,$i$ 到 ...
- 【uoj#180】[UR #12]实验室外的攻防战 结论题+树状数组
题目描述 给出两个长度为 $n$ 的排列 $A$ 和 $B$ ,如果 $A_i>A_{i+1}$ 则可以交换 $A_i$ 和 $A_{i+1}$ .问是否能将 $A$ 交换成 $B$ . 输入 ...
- 【bzoj4401】块的计数 结论题
题目描述 给出一棵n个点的树,求有多少个si使得整棵树可以分为n/si个连通块. 输入 第一行一个正整数N,表示这棵树的结点总数,接下来N-1行,每行两个数字X,Y表示编号为X的结点与编号为Y的结点相 ...
- 【bzoj3997】[TJOI2015]组合数学 Dilworth定理结论题+dp
题目描述 给出一个网格图,其中某些格子有财宝,每次从左上角出发,只能向下或右走.问至少走多少次才能将财宝捡完.此对此问题变形,假设每个格子中有好多财宝,而每一次经过一个格子至多只能捡走一块财宝,至少走 ...
- 【bzoj2079】[Poi2010]Guilds 构造结论题
题目描述 Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工会要求每个城市 ...
- agc015F - Kenus the Ancient Greek(结论题)
题意 题目链接 $Q$组询问,每次给出$[x, y]$,定义$f(x, y)$为计算$(x, y)$的最大公约数需要的步数,设$i \leqslant x, j \leqslant y$,求$max( ...
随机推荐
- tespeed-测试网速的Python工具
1.安装(环境CentOS7) #pip install lxml #wget wget http://sourceforge.net/projects/socksipy/files/socksipy ...
- PLSQL_性能优化工具系列10_Automatic Database Diagnostic Monitor - ADDM
2014-09-06 Created By BaoXinjian
- GL_GL系列 - 预算管理分析(案例)
2014-07-09 Created By BaoXinjian
- C#(结构体_枚举类型)
结构体一般定义在Main函数上面,位于Class下面,作为一个类:一般情况Struct定义在Main函数前面,Main函数里面的地方都可以使用,参数前面加上public代表公用变量. 用法 1 ...
- 通过IP连接网上打印机(转载)
From:http://zhidao.baidu.com/link?url=YZzFWur4-UZrNEobHv9zTkbYocMAjKkCq0LBj1QjJ6wApUT7MljxoD8JMBREUH ...
- sql server异地备份数据库
--注意:异地备份数据库,需要先开启备份文件夹的网络共享,数据库选择master --打开允许执行xp_cmdshell exec master..xp_cmdshell 'net use \\192 ...
- windows service的继承类ServiceBase
https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicebase.exitcode(v=vs.80).aspx 在停 ...
- grep和sed替换文件中的字符串
sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...
- [ActionScript 3.0] 跨域策略文件crossdomain.xml配置详解
1.简介 flash在跨域时唯一的限制策略就是crossdomain.xml文件,该文件限制了flash是否可以跨域读写数据以及允许从什么地方跨域读写数据. 位于www.a.com域中的SWF文件要访 ...
- 二叉树的JAVA实现-二叉树的增删改查CRUD
package org.lyk.interfaces; import java.util.List; public interface IBiTree<T extends Comparable& ...