模拟题求助
查看原帖
模拟题求助
1073342
Genshin_ZFYX楼主2024/7/3 20:33
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=2*1e5+5;
int n,m,a,b,u,d,l,r,k1,k2,k3,k4,scr[5];
struct node{
	int x,y;
}a1[N],a2[N],a3[N],a4[N];
bool cmp1(node a,node b){return a.x<b.x;}
bool cmp2(node a,node b){return a.y<b.y;}
bool cunzai(int x,int y)
{
	return x>=u&&x<=d&&y>=l&&y<=r;
}
signed main()
{
    cin.tie(0)->sync_with_stdio(0);
    int t;cin>>t;
    while(t--)
    {
		cin>>d>>r>>n>>m;
    	scr[0]=scr[1]=0;
    	k1=k3=1;k2=k4=n;
    	u=l=1;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a1[i].x>>a1[i].y;
    		a2[i]=a1[i];
		}
		sort(a1+1,a1+n+1,cmp1);
		sort(a2+1,a2+n+1,cmp2);
		for(int i=1;i<=m;i++)
		{
			char c;int k,cnt=0;
			cin>>c>>k;
			if(c=='U')
			{
				for(;a1[k1].x<u+k;k1++)
				if(cunzai(a1[k1].x,a1[k1].y))
				cnt++;
				u+=k;
			}
			if(c=='D')
			{
				for(;a1[k2].x>d-k;k2--)
				if(cunzai(a1[k2].x,a1[k2].y))
				cnt++;
				d-=k;
			}
			if(c=='L')
			{
				for(;a2[k3].y<l+k;k3++)
				if(cunzai(a2[k3].x,a2[k3].y))
				cnt++;
				l+=k;
			}
			if(c=='R')
			{
				for(;a2[k4].y>r-k;k4--)
				if(cunzai(a2[k4].x,a2[k4].y))
				cnt++;
				r-=k;
			}
			scr[i%2]+=cnt;
		}
		cout<<scr[1]<<" "<<scr[0]<<'\n';
	}
	return 0;
}

2024/7/3 20:33
加载中...