cf 617C

acm萌新,以后在这个博客更新和记录一些题目吧

cf 617C,本来以为这场div3能上分,结果t3卡住了,然后t4明明很简单但只扫了一眼......t3一直在想双指针,思路太沙雕

正解就是用一个map,int>记录最后到达当前位置的是第几个字符,想法就是如果现在到达的位置之前也到达过,那么这段就可以删掉。然后使得可以删掉的长度大小最小,并记录对应的posl,posr。

然后一些细节也弄了挺久,位置各种+1 -1的错...还是太菜了

贴个代码吧

#include
using namespace std;
const int inf=200000+10;
map,int> mp; //***
int main()
{
	string s;
	int t,i,j,k,n,len,f,posl,posr;
	//freopen("617c.txt","r",stdin);
	cin>>t;
	while (t--)
	  {
	  	int min=inf;
	  	pair p=make_pair(0,0);//***
	  	cin>>n;mp.clear();
	  	cin>>s;len=s.length();
	  	posl=-1;posr=-1;
		mp[{p.first,p.second}]=0;
	  	for (i=0;i 
 

  

你可能感兴趣的:(cf 617C)