NC50770. A题
描述
输入描述
多组测试样例。
每组测试样例的第一行有两个数字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->4C++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; }