为什么会re?求改。
查看原帖
为什么会re?求改。
894838
Alystkia楼主2024/3/30 23:44

样例过了,可是提交之后re

#include<bits/stdc++.h>
using namespace std;
struct node
{
	bool chu;//之前出没出现过
	int id;//第一次出现是在哪
};
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		map<string,node>mp;
		string a[n+5]={};
		for(int i=1;i<=n;i++)
		{
			cin>>a[i];
			mp[a[i]].chu=true;
			mp[a[i]].id=-1;
		}
		int m;
		cin>>m;
		for(int j=1;j<=m;j++)
		{
			int x,y;
			cin>>x>>y;
			string s="0";
			for(int z=x;z<=y;z++)
			{
				if(mp[a[z]].chu==true)//如果是第一次出现
				{
					s+=a[z];
					mp[a[z]].chu=false;
					mp[a[z]].id=z;
				}
				else if(mp[a[z]].chu==false)//如果已经出现过
				{
					s+=a[z];
					int len=s.size();
					int len1=mp[a[z]].id,len2=len-mp[a[z]].id;//len1为这个重复的数第一次出现时的下标
					for(int k=len1;k<=len;k++)
					{
						mp[a[k]].chu=true;
						
					}
					s.erase(len1,len2+1);//删除
					
					//mp[a[z]].chu==true;
				}
				
			}
			cout<<s.size()-1<<endl;
			for(int c=x;c<=y;c++)
				mp[a[c]].chu=true;
		}
		
	}
	return 0;
}
2024/3/30 23:44
加载中...