| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么TLE呢? WA的话还可以理解#include <iostream>
#include <string>
using namespace std;
string book[2600];
int i,j,n,favor[2600],f[2600],pre[2600],answer[2600],num,max1,tmp;
void shell_sort(string* a, int n)
{
int gap,i,j,tmp1;
string tmp;
for(gap = 1; (gap *= 3) < n; gap++)
;
for(gap /= 3; gap > 0; gap = (gap+1)/3)
for(i = gap; i < n; i++)
for(j = i - gap; j >= 0; j -= gap)
{
if(a[j+gap]<a[j])
{
tmp = a[j]; a[j] = a[j+gap]; a[j+gap]= tmp;
tmp1 = favor[j]; favor[j] = favor[j+gap]; favor[j+gap] = tmp1;
}
else
break;
}
}
bool check(string a, string b) {
int pa,pb,ac,bc;
pa = pb = 0;
while (pa < a.size() && pb < b.size()) {
while (!(a[pa]>='a'&&a[pa]<='z' || a[pa]>='A'&&a[pa]<='Z') && pa < a.size()) pa++;
while (!(b[pb]>='a'&&b[pb]<='z' || b[pb]>='A'&&b[pb]<='Z') && pb < b.size()) pb++;
if (pa == a.size() || pb == b.size()) break;
if (a[pa]>='a'&&a[pa]<='z') ac = a[pa]-'a';
else ac = a[pa]-'A';
if (b[pb]>='a'&&b[pb]<='z') bc = b[pb]-'a';
else bc = b[pb]-'A';
if (ac == bc) return false;
pa++; pb++;
}
return true;
}
int main()
{
while(cin>>n)
{
for(i=0; i<n; i++)
{
cin>>favor[i];
cin.get();
getline(cin,book[i]);
// cout<<book[i]<<endl;
// cin.get();
}
shell_sort(book,n);
/* for(i=0; i<n; i++)
{
cout<<favor[i]<<" "<<book[i]<<endl;
} */
pre[0] = -1;
f[0] = favor[0];
for(i=1; i<n; i++)
{
f[i] = tmp = favor[i];
pre[i] = -1;
for(j=0; j<i; j++)
{
if(check(book[j],book[i]))
{
if(f[i]+f[j]>tmp)
{
tmp = f[i]+f[j];
pre[i] = j;
}
}
}
f[i] = tmp;
}
max1 = 0;
for(i=1; i<n; i++)
{
if(f[i]>f[max1])
max1 = i;
}
answer[0] = max1;
num = 1;
i = max1;
while(pre[i]!=-1)
{
i = pre[i];
answer[num++] = i;
}
cout<<num<<endl<<f[max1]<<endl;
while(num--)
{
cout<<book[answer[num]]<<endl;
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator