列表

详情


NC50770. A题

描述

A要去B的城市游玩,A在城市1居住,B在城市X居住,现在有一些神奇的传送门和一些奇神的传送门。
已知,神奇的传送门可以从编号小的城市传送往编号大的城市,奇神的传送门可以从编号大的城市传送往编号小的城市,但是在某些城市没有某种传送门。
那么已知数组a,其中ai代表着城市i是否有神奇的传送门(ai=1代表有,ai=0代表没有),以及数组b,其中bi代表着城市i是否有奇神的传送门。
神奇的海螺想知道A能不能去B的城市玩。

输入描述

多组测试样例。
每组测试样例的第一行有两个数字N和X,代表了城市的数量和B的居住地址(2 <= N <= 1000 2 <= X <= 1000)
第二行给出数组a,第三行给出数组b。

输出描述

可行,则输出YES
否则,输出NO

示例1

输入:

5 3
1 1 1 1 1
1 1 1 1 1
5 4
1 0 0 0 1
0 1 1 1 1
5 2
0 1 1 1 1
1 1 1 1 1

输出:

YES
YES
NO

说明:

第二组样例路线:1->5->4

原站题解

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

C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 328K, 提交时间: 2019-07-08 09:44:38

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
bool a[505],b[505]; 
int main(){
	int n,x;
	while(~scanf("%d%d",&n,&x)){
		for(int i=1;i<=n;i++)scanf("%d",&a[i]);
		for(int i=1;i<=n;i++)scanf("%d",&b[i]);
		if(!a[1])puts("NO");
		else if(!a[x]&&!b[x])puts("NO");
		else if(a[x])puts("YES");
		else{
			int f=0;
			for(int i=x+1;!f&&i<=n;i++)
			if(a[i]&b[i])f=1;
			if(f)puts("YES");
			else puts("NO");
		}
	}
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 480K, 提交时间: 2019-07-08 11:50:59

#include<bits/stdc++.h>
using namespace std;
#define maxn 1005
int a[maxn],b[maxn],n,x;
void work(){
	int ma=0;
	for(int i=1;i<=n;i++)scanf("%d",a+i);
	for(int i=1;i<=n;i++){scanf("%d",b+i);if(a[i]&&b[i])ma=i;}
	if(!a[1]||!(b[x]||a[x]))puts("NO");
	else if(a[x]||ma>x)puts("YES");
	else puts("NO");
}
int main(){
	while(~scanf("%d%d",&n,&x))work();
	return 0;
}

C 解法, 执行用时: 3ms, 内存消耗: 284K, 提交时间: 2022-11-06 20:43:10

#include"stdio.h"
int main(){
	int a[1000],b[1000],n,x,i;
	int max;
    while(~scanf("%d%d",&n,&x))
	{
	for(i=1;i<=n;i++)
	 scanf("%d",&a[i]);
    for(i=1;i<=n;i++)
	{
	scanf("%d",&b[i]);
	if(a[i]&&b[i])
	max=i;
	}
    if(a[1]==0||(a[x]||b[x])==0)
	printf("NO\n");
    else if(a[x]||max>x)
	printf("YES\n");
	else
	 printf("NO\n");
	}
    return 0;
}

上一题