| ||||||||||
| 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 | |||||||||
我说这题是不是有问题?O(n)都会TLE#include "iostream"
#include "string"
#include "vector"
#include "deque"
using namespace std;
struct node
{
int l;
int r;
int sign;
char c;
}re[10001];
char str[10001];
int main()
{
int Case;
scanf("%d",&Case);
for( ; Case-- ; )
{
scanf("%s",str);
deque<node> s;
deque<node> que;
s.clear();
int len = strlen(str);
int i,j,k;
node root;
node p;
for( i=0 ; i<len ; i++ )
{
//re[i].c = str[i];
//re[i].l = -1;
//re[i].r = -1;
if( str[i]>='a'&&str[i]<='z' )
{
node tmp;
tmp.c = str[i];
tmp.l = -1;
tmp.r = -1;
tmp.sign = i;
s.push_back(tmp);
re[i] = tmp;
}
else
{
node tmp;
p.c = str[i];
p.sign = i;
tmp = s.back();
s.pop_back();
p.l = tmp.sign;
tmp = s.back();
s.pop_back();
p.r = tmp.sign;
s.push_back( p );
root = p;
re[i] = p;
}
}
que.clear();
que.push_back( root );
string res = "";
//res.clear();
node t;
//memset(flag,0,sizeof(flag));
for( ; !que.empty() ; )
{
t = que.front();
res = t.c + res;
que.pop_front();
if( t.r != -1 )
{
que.push_back( re[ t.r ] );
}
if( t.l != -1 )
{
que.push_back( re[ t.l ] );
}
}
printf("%s\n",res.c_str());
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator