社区讨论

萌新求助!

P4753River Jumping参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi7pr0wv
此快照首次捕获于
2025/11/21 01:36
4 个月前
此快照最后确认于
2025/11/21 01:36
4 个月前
查看原帖
为什么最后一个点过不了?有毒吧!
大佬帮忙看一下嘛!
CPP
#include<bits/stdc++.h>
using namespace std;
inline void read(int &x)
{
	int p=1;x=0;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-') p=-1;
		c=getchar();
	}
	while(c<='9'&&c>='0')
	{
		x=x*10+c-'0';
		c=getchar();
	}
	x*=p;
}
int n,m,s;
int a[100000];
bool vis[100000];
inline void dfs()
{
	
}
inline void work()
{
	if(n<s)
	{
		cout<<"NO";
		return ;
	}
	if(n-a[m]<s||a[1]<s)
	{
		cout<<"NO";
		return ;
	}
	for(int i=1;i<=m-2;i++)
	{
		if(a[i+2]-a[i]<s)
		{
			cout<<"NO";
			return ;
		}
	}
	if(n-a[m-1]<s)
	{
		cout<<"NO";
		return;
	}
	cout<<"YES"<<endl;
	int i;
	int now=0;
	for(i=1;i<=m;i++)
	{
		while(a[i]-now<=s&&i<m)
		{
			i++;
		}
		vis[i]=1;
		now=a[i];
		cout<<i<<" ";
	}
	cout<<m+1<<" ";
	now=n;
	for(i=m;i>=1;i--)
	{
		while((now-a[i]<=s||vis[i]))
		{
			i--;
		}
		now=a[i];
		if(i>0)cout<<i<<' ';
	}
	cout<<0;
}
inline void write()
{
	read(n);read(m);read(s);
	for(int i=1;i<=m;i++) read(a[i]);
	work();
}
int main()
{
	write();
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...