为什么会WA,请大佬请教
查看原帖
为什么会WA,请大佬请教
1274421
wujunji楼主2024/7/18 19:10
#include<bits/stdc++.h>
using namespace std;
int n;
int x[500005],y[500005];
char xch[500005];
inline int rd()
{
    int x=0,sig=1;
    char c;
    for(c=getchar();c<'0'||c>'9';c=getchar())
	    if (c=='-') sig=-1;
    for(;c>='0'&&c<='9';c=getchar())
	    x=x*10+c-48;
    return x*sig;
}
inline void wt(int x)
{
    if(!x) putchar('0');
	else
    {
        char s[10];
        int i,j=0;
        for(;x>0;x/=10)
		    s[j++]=x%10;
        for(i=j-1;i>=0;i--)
		    putchar(s[i]+48);
    }
    putchar('\n');
}
inline bool xx(int i,int aa)
{
	if(x[0]<x[aa])
	{
		if(y[0]<y[aa]) return ((x[0]<x[i])&&(y[0]<y[i])&&(x[i]<x[aa])&&(y[i]<y[aa]));
		return ((x[0]<x[i])&&(y[0]>y[i])&&(x[i]<x[aa])&&(y[i]>y[aa]));
	}
	if(y[0]<y[aa]) return ((x[0]>x[i])&&(y[0]<y[i])&&(x[i]>x[aa])&&(y[i]<y[aa]));
	return ((x[0]>x[i])&&(y[0]>y[i])&&(x[i]>x[aa])&&(y[i]>y[aa]));
}
inline bool dang(int aa,int op)
{
	if(op==1)
	{
		for(int i=1;i<=n;i++)
			if((abs(x[0]-x[i])==abs(y[0]-y[i]))&&xx(i,aa)) return true;
		return false;
	}
	if(op==2)
	{
		if(x[0]==x[aa])
		{
			for(int i=1;i<=n;i++)
				if(x[i]>min(x[0],x[aa])&&x[i]<max(x[0],x[aa])) return true;
			return false;
		}
		for(int i=1;i<=n;i++)
			if(y[i]>min(y[0],y[aa])&&y[i]<max(y[0],y[aa])) return true;
		return false;
	}
	if(abs(x[0]-x[aa])==abs(y[0]-y[aa]))
	{
		for(int i=1;i<=n;i++)
			if((abs(x[0]-x[i])==abs(y[0]-y[i]))&&xx(i,aa)) return true;
	}
	if(x[0]==x[aa])
	{
		for(int i=1;i<=n;i++)
			if(x[i]>min(x[0],x[aa])&&x[i]<max(x[0],x[aa])) return true;
		return false;
	}
	if(y[0]==y[aa])
	{
		for(int i=1;i<=n;i++)
			if(y[i]>min(y[0],y[aa])&&y[i]<max(y[0],y[aa])) return true;
		return false;
	}
	return false;
}
inline bool check(int aa)
{
	if(xch[aa]=='B') return ((abs(x[0]-x[aa])==abs(y[0]-y[aa]))&&(!dang(aa,1)));
	if(xch[aa]=='R') return ((x[0]==x[aa]||y[0]==y[aa])&&!dang(aa,2));
	return (((abs(x[0]-x[aa])==abs(y[0]-y[aa]))&&(!dang(aa,1)))||((x[0]==x[aa]||y[0]==y[aa])&&!dang(aa,2)));
}
signed main()
{
    std::ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	n=rd();
	x[0]=rd();
	y[0]=rd();
	for(int i=1;i<=n;i++)
	{
		xch[i]=getchar();
		x[i]=rd();
		y[i]=rd();	
	}
	for(int i=1;i<=n;i++)
		if(check(i))
		{
			puts("YES");
			return 0;
		}
	puts("NO");
    return 0;
}
2024/7/18 19:10
加载中...