社区讨论

43分TLE求优化

P10734 [NOISG 2019 Prelim] Experimental Charges参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhk6f5dq
此快照首次捕获于
2025/11/04 14:16
4 个月前
此快照最后确认于
2025/11/04 14:16
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,q,i,j,x,y,u,v,w;
	char c;
	cin>>n>>q;
	int a[n*2+1];
	for(i=0;i<n*2+1;i++)
		a[i]=i; 
	for(i=0;i<q;i++)
	{
		cin>>c>>x>>y;
		if(c=='A')
		{
			for(u=x;u!=a[u];u=a[u]);
			for(v=y+n;v!=a[v];v=a[v]);
			a[u]=v;
			u=x;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			u=y+n;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			for(u=x+n;u!=a[u];u=a[u]);
			for(v=y;v!=a[v];v=a[v]);
			a[u]=v;
			u=x+n;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			u=y;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
		}
		if(c=='R')
		{
			for(u=x;u!=a[u];u=a[u]);
			for(v=y;v!=a[v];v=a[v]);
			a[u]=v;
			u=x;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			u=y;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			for(u=x+n;u!=a[u];u=a[u]);
			for(v=y+n;v!=a[v];v=a[v]);
			a[u]=v;
			u=x+n;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
			u=y+n;
			while(u!=a[u])
			{
				w=u;
				u=a[u];
				a[w]=v;
			}
		}
		if(c=='Q')
		{
			for(u=x;u!=a[u];u=a[u]);
			for(v=y;v!=a[v];v=a[v]);
			if(u==v)
			{
				cout<<"R\n";
				continue;
			}
			for(u=x;u!=a[u];u=a[u]);
			for(v=y+n;v!=a[v];v=a[v]);
			if(u==v)
			{
				cout<<"A\n";
				continue;
			}
			cout<<"?\n";
		}
	}
	return 0; 
 } 

回复

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

正在加载回复...