本次比赛发挥较好,最后靠运气过了一个题,有点刺激(嘿嘿),平常多动脑,比赛时就少了些急躁。
c题:
CodeForces - 157C
题解:C题被翻译搞得有点迷。。。一开始以为是任意位置插入字母,后来才明白是只能首尾插入字母,这样题目就很明确了,就是比较两字符传连续相等的字母有多少即可。
可以在a字母首尾加上b字符串长度的空字符串,然后从头到尾与b字符比较;另一种思路是比较两次,一次以a字符串为参照,一次以b字符串为参照。b字符串的尾可能等于a字符串的头,b字符串的头可能等于a字符串的尾。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll nl=1e5+5;
const double PI = atan(1.)*4.;
int main(){
string a;
string b;
cin>>a>>b;
ll i,j;
ll sum=0;
ll t=0;
string s="";
for(i=0;i<a.size();i++){
for(j=i;j<a.size();j++){
s+=a[j];
}
ll kl;
kl=s.size();
ll k=0;
while(1){
if(k>=b.size()||k>=kl){
break;
}
if(s[k]==b[k]){
t++;
}
k++;
}
if(sum<t){
sum=t;
}
s="";
t=0;
}
for(i=0;i<b.size();i++){
for(j=i;j<b.size();j++){
s+=b[j];
}
ll kl;
kl=s.size();
ll k=0;
while(1){
if(k>=a.size()||k>=kl){
break;
}
if(s[k]==a[k]){
t++;
}
k++;
}
if(sum<t){
sum=t;
}
s="";
t=0;
}
cout<<b.size()-sum;
}