hdu 3260
来源:互联网 发布:苹果电脑适合做淘宝吗 编辑:程序博客网 时间:2024/05/22 14:13
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3460
据说可以用字典树,但是不会。。我是用排序做的。有点贪心的感觉。
其实 ans=输出(n)+ 相邻的两字符串不同的部分*2 - 最大字符串(最后保留部分。)
下面是AC代码;
#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;bool cmp(const string &a,const string &b){return strcmp(a.c_str(),b.c_str())<0;}int main(){int n,i,j;char name[100];while(EOF!=scanf("%d",&n)){vector<string> vec; for(i=0;i<n;i++){scanf("%s",name);vec.push_back(string(name));}sort(vec.begin(),vec.end(),cmp);int ans=0;int max=vec[0].size();ans+=vec[0].size();for(i=1;i<n;i++){for(j=0;j<vec[i-1].size()&&j<vec[i].size();j++){if(vec[i][j]!=vec[i-1][j])break;}ans+=vec[i].size()-j;if(vec[i].size()>max) max=vec[i].size();}cout<<n+2*ans-max<<endl;}return 0;}