比赛 NOIP模拟赛by mzx Day2 评测结果 WAWWWAWEEE
题目名称 拯救紫萱学姐 最终得分 20
用户昵称 assassin 运行时间 3.014 s
代码语言 C++ 内存使用 0.37 MiB
提交时间 2016-10-20 20:43:45
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<utility>
using namespace std;
string str1,str2;
bool temp=1;
int n,m;
long long minn=0;
int a,b;
int numa=0,numb=0;
string qian[6000]={},hou[6000]={};
string qian1[6000]={},hou1[6000]={};
void init1(string* x,string s,int length)
{
	for(int i=1;i<=length;i++)
		for(int j=0;j<i;j++)
			x[i]+=s[j];
}
void init2(string* x,string s,int length)
{
	for(int i=1;i<=length;i++)
	{	
		string ss;
		for(int j=length-1;j>length-i-1;j--)
			ss+=s[j];
		string sss(ss.rbegin(),ss.rend());
		x[i]=sss;
	}	
}
int main()
{
	freopen("savemzx.in","r",stdin);
	freopen("savemzx.out","w",stdout);
	cin>>str1;
	n=str1.size();
	m=n-1;
	char c=str1[n-1];
	str2=str1.erase(n-1,1);
	str1+=c;
	init1(qian,str1,n);
	init2(hou,str1,n);
	for(int i=1;i<=n+1;i++)
	{	
		for(int j=1;j<=n+1;j++)
			if(qian[i]==hou[j]) 
			{
				a=qian[i].size();
				temp=0;
				break;
			}
		if(!temp) break;	
	}
	numa=(n-a)*(n-a)+a*a;
	temp=1;
	init1(qian1,str2,m);
	init2(hou1,str2,m);
	for(int i=1;i<=m+1;i++)
	{	
		for(int j=1;j<=m+1;j++)
			if(qian1[i]==hou1[i])
			{
				b=qian1[i].size();
				temp=0;
				break;
			}
		if(!temp) break;
	}
	numb=(m-b)*(m-b)+b*b;
	minn=numa+numb;
	/*for(int i=1;i<=n;i++)
		cout<<qian[i]<<' ';		
	cout<<endl;
	for(int i=1;i<=n;i++)
		cout<<hou[i]<<' ';
	cout<<endl;
	for(int i=1;i<=m;i++)
		cout<<qian1[i]<<' ';
	cout<<endl;
	for(int i=1;i<=m;i++)
		cout<<hou1[i]<<' ';
	cout<<endl;*/
	cout<<minn<<endl;		
	return 0;
}