AT Beginner 245 C求助
  • 板块灌水区
  • 楼主miaojintao
  • 当前回复20
  • 已保存回复20
  • 发布时间2022/3/26 21:40
  • 上次更新2023/10/28 05:28:23
查看原帖
AT Beginner 245 C求助
408859
miaojintao楼主2022/3/26 21:40

C - Choose Elements

用了简单递归T了17个点,求思路

我的代码:

#include<iostream>
#include<cmath>
using namespace std;

int n,k,flag=0;
int a[200002],b[200002],p[200002][5];

void s(int x,int y){
	if(x==n) {
		flag=1;return;
	}
	if(p[x][y]<=k){
		if(y==3){
			s(x+1,2);
			s(x+1,4);
		}
		else if(y==4){
			s(x+1,1);
			s(x+1,3);
		}
		else{
			s(x+1,y);
			s(x+1,y+2);
		}
	}
}

int main()
{
	std::ios::sync_with_stdio(false);
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	for(int i=1;i<=n-1;i++){
		p[i][1]=abs(a[i]-a[i+1]);
		p[i][2]=abs(b[i]-b[i+1]);
		p[i][3]=abs(a[i]-b[i+1]);
		p[i][4]=abs(b[i]-a[i+1]);
	}
	for(int i=1;i<=4;i++){
		s(1,i);
		if(flag){
			cout<<"Yes";return 0;
		}
	}
	cout<<"No";
	return 0;
}
2022/3/26 21:40
加载中...