A题比较简单,在这里不在写了,B题写一下,提议一开始很迷,其实就是给你a遇到障碍物的距离,以及b遇到障碍物的距离,a和b的位置可以随意确定,让你去求有没有可能用一组障碍物对他俩都试用。
我的思路是先用a去确定好障碍物位置,然后用暴力搜索b的起点位置,如果符合,就有,不符合,就输出NO
My ugly code
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <string>
#include <stack>
#include <vector>
#include <iostream>
#define ll long long
using namespace std;
int n,l;
int a[205];
int b[205];
int vis[256];
int main(){
while(~scanf("%d%d",&n,&l)){
memset(vis,0,sizeof(vis));
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
vis[ a[i] ]=1;
}
for(int i=0;i<n;i++) scanf("%d",&b[i]);
int flag=0;
for(int i=0;i<l;i++){
int cnt=0;
for(int j=0;j<n;j++){
if(vis[ (i+b[j])%l ]==1){
cnt++;
}
}
if(cnt >= n){
flag=1;
break ;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}