萌新求调
查看原帖
萌新求调
992990
shiyiming楼主2024/10/6 09:23

TLE19-23

#include <iostream>
#include <cstring>
using namespace std;
string k;
bool vis[3000005];
int ans[3000005],a,b,c,len,step=0;
bool dfs(int x,char t)
{
	if(t=='A')
	{
		a=x;
		for(int i=x+1;i<len-1;i++)
		{
			if(vis[i]==false&&k[i]=='P')
			{
				if(dfs(i,'P'))return true;
			}
		}
	}
	if(t=='P')
	{
		b=x;
		for(int i=x+1;i<len;i++)
		{
			if(vis[i]==false&&k[i]=='C')
			{
				if(dfs(i,'C'))
				{
					return true;
				}
			}
		}
	}
	if(t=='C')
	{
		c=x;
		vis[a]=true;
		vis[b]=true;
		vis[c]=true;
		ans[step*3]=a+1;
		ans[step*3+1]=b+1;
		ans[step*3+2]=c+1;
		step++;
		return true;
	}
	return false;
}
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		cin>>k;
		len=k.size();
		step=0;
		memset(vis,0,sizeof(vis));
		for(int i=0;i<len-2;i++)
		{
			if(k[i]=='A')
			{
				if(!dfs(i,'A'))
				{
					break;
				}
			}
		}
		bool flag=false;
		for(int i=0;i<len;i++)
		{
			if(!vis[i])
			{
				printf("%c",k[i]);
				flag=true;
			}
		}
		if(flag==false)
		{
			printf("Perfect\n");
		}
		else printf("\n");
		printf("%d\n",step);
		for(int i=0;i<step;i++)
		{
			printf("%d %d %d\n",ans[i*3],ans[i*3+1],ans[i*3+2]);
		}
	}
	return 0;
}
2024/10/6 09:23
加载中...