WA 一个点,求条
查看原帖
WA 一个点,求条
1379256
zssyt楼主2025/1/15 20:43

WA 一个点,求条

#include<bits/stdc++.h>
using namespace std;
#define int long long
map<long long,int> mp;
int n,m,a,b,l[20005],r[20005];
int cheak(int l,int r)
{
	int len=r-l;
	int aa=len/a;
	if((aa*a)+(b-a)*aa<len||a>len) return 0;
	else return 1;
}
void zy(int i)
{
	int ll=r[i-1]+1,rr=r[i-1]+21;
	int lll=l[i]-21,rrr=l[i]-1;
	for(int i=ll;i<=rr;i++)
	{
		for(int j=max(lll,0ll);j<=rrr;j++)
		{
			if(j<=i) continue;
			if(mp[i]) mp[j]|=cheak(i,j);
		}
	}
}
signed main()
{
	cin>>n>>m>>a>>b;
	for(int i=1;i<=m;i++)
	{
		cin>>l[i]>>r[i];
		if(r[i]-l[i]+1>b)
		{
			cout<<"No";
			return 0;
		}
	}
	mp[1]=1;
	for(int i=1;i<=m;i++)
	{
		zy(i);
		for(int j=r[i]+1;j<=r[i]+21;j++)
		{
			for(int k=max(l[i]-21,0ll);k<=l[i]-1;k++)
			{
				if(j-k>=a&&j-k<=b)
				{
					mp[j]|=mp[k];
				}
			}
		}
	}
	l[m+1]=n+1;
	zy(m+1);
	if(mp[n]) cout<<"Yes";
	else cout<<"No";
}

码风有点乱...(逃)

2025/1/15 20:43
加载中...