列表

详情


NC54667. 双流机场

描述

众所周知,双流机场是一座庞大的现代化国际机场。
双流机场中间修建有很多自动人行扶梯,这些扶梯纵横交错,分为纵横两种,双流机场一共有n条纵向扶梯(每条纵向扶梯只能固定的朝上或者是朝下运输行人),m条横向扶梯(每条横扶梯只能固定朝左或者是朝右运输行人),小魏从双流机场的管理人员那儿得知了这些纵横交错的扶梯的运输方向(具体排布如样例所示)。
大家都知道站在机场的扶梯上是一件特别爽的事情,但是可能我们从某些扶梯的交点(下文简称为某些点)出发只走扶梯不能到达某些点,所以小魏的问题就来了:他能否从任何点出发通过扶梯到达任何点?(为了小魏的安全着想,小魏在只能在扶梯上站着不动,或者是在交界处走上另外一个扶梯,而不能逆行,逆行太危险了)
如果可以小魏会很开心请输出“Happy”,否则他会很伤心请输出“Sad”(没有引号)

输入描述

第一行输入一个正整数T(T<20)代表有 T 组数据
对于每一组数据:
第一行输入两个正整数 n,m(2<=n,m<=10^5)
第二行输入 n 个 0 或者是 1 , 0 代表该扶梯向下运输行人, 1 代表该扶梯向上运输行人 ,从左往右 n 个 0,1 代表从从左往右 n 个自动扶梯的走向。
第三输入 m 个 0 或者是 1 , 0 代表该扶梯向左运输行人, 1 代表该扶梯向右运输行人 ,从左往右 m 个 0,1 代表从从上往下 m 个自动扶梯的走向。

输出描述

每行输出一个“Happy”或者是“Sad”(没有引号)。

示例1

输入:

2
3 3
010
010
3 3
011
011

输出:

Sad
Happy

说明:

第一组数据图示:
显然存在左下角那个点无法到达其它点。 
PS:这是一道超级超级简单的签到题目。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 10ms, 内存消耗: 2116K, 提交时间: 2019-12-05 17:35:29

#include<stdio.h>

int main()
{
	int t, n, m, i, j;
	char a[100000], b[100000];
	scanf("%d", &t);
	for (i = 0; i < t; i++)
	{
		scanf("%d%d", &n, &m);
		scanf("%s%s", &a, &b);	
		if (a[0]==b[0]&&a[n-1]==b[m-1]&&a[0]!=a[n-1])
			printf("Happy\n");
		else
			printf("Sad\n");
	}
	return 0;
}

C++14(g++5.4) 解法, 执行用时: 62ms, 内存消耗: 772K, 提交时间: 2019-11-17 15:58:27

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	cin>>t;
	for(int i=0;i<t;i++)
	{
		int n,m;
		cin>>n>>m;
		string a,b;
		cin>>a;
		cin>>b;
		if(a[0]!=a[n-1]&&b[0]!=b[m-1]&&a[0]==b[0])
		{
			cout<<"Happy"<<endl;
		}
		else
		cout<<"Sad"<<endl;
	}
	return  0;
}

Python3(3.5.2) 解法, 执行用时: 25ms, 内存消耗: 3900K, 提交时间: 2019-11-17 15:06:10

n = int(input())
for i in range(n):
    n, m = map(int, input().split())
    strn = input()
    strm = input()
    if(strn[0] != strm[m-1] and strn[n-1] != strm[0] and strn[0] == strm[0] and strn[n-1] == strm[-1]):
        print("Happy")
    else:
        print("Sad")

C++11(clang++ 3.9) 解法, 执行用时: 104ms, 内存消耗: 2368K, 提交时间: 2019-11-24 17:09:19

#include<bits/stdc++.h>
using namespace std;
int main ()
{
	int k,n,m;
	cin>>k;
	while(k--){
		cin>>n>>m;
	
		string a,b;	
		cin>>a>>b;
		if(a[0]!=a[n-1]&&b[0]!=b[m-1]&&a[0]==b[0])
		cout<<"Happy"<<endl;
		else cout<<"Sad"<<endl;
	}
	return 0;
}

上一题