[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( ...
随机推荐
- Hadoop:实战Web日志分析
示例场景 日志说明 有两台Web服务器,日志文件存放在/usr/local/nginx/logs/目录,日志默认为nginx定义格式.如: 123.13.17.13 - - [25/Aug/2016: ...
- Python builtins
>>> dir (__builtins__) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseExcepti ...
- 如何把python最小化安装在客户机上面
因为想尝试在我们的桌面软件中加入python支持,所以想简化python的库,到时候直接放到客户机上面,并且放到我们的目录下,尽量免去不必要的东西,也不要影响机子,不过当写好的程序放到测试机子上后,老 ...
- ASP.NET内置对象详解
ASP.NET的内置对象介绍 1.Response 2.Request 3.Server 4.Application 5.Session 6.Cookie Request对象主要是让服务器取得客户端浏 ...
- visual studio 2013 中常用的一些快捷键
在编辑代码或者复制网上的代码段到VS2013中时,代码会显示的非常乱,这里便可以通过 vs2013中的快捷键进行自动对齐操作[ctrl+k+f],类似的快捷操作还有很多,在这里给大家总结一下,以提高编 ...
- 黄聪:C#设置窗体打开位置(在显示器的右下角打开)
; ; this.SetDesktopLocation(x, y); 注释:System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Wid ...
- (XAML)"XXXX" does not exist in the namespace "clr-
Error 139 Assembly 'System.Activities.Core.Presentation' was not found. Verify that you are not miss ...
- POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
题是看了这位的博客之后理解的,只不过我是又加了点简单的注释. 链接:http://blog.csdn.net/chinaczy/article/details/5890768 我还加了一些注释代码,对 ...
- POJ 3187 杨辉三角+枚举排列 好题
如果给出一个由1~n组成的序列,我们可以每相邻2个数求和,得到一个新的序列,不断重复,最后得到一个数sum, 现在输入n,sum,要求输出一个这样的排列,如果有多种情况,输出字典序最小的那一个. 刚开 ...
- poj_2485_mst
Highways Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit St ...