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 |
先字符串排序,再建笛卡儿树,但还是time limited exceed??????先字符串排序,再建笛卡儿树,但还是time limited exceed??????请问各位大哥是什么回事 #include <utility> #include <string> #include <iostream> #include <algorithm> using namespace std; bool operator<(const pair<string,int> &a1, const pair<string,int> &a2) { return a1.first< a2.first; } struct node{ pair<string,int> data; node *lchild, *rchild; node(){ lchild=NULL; rchild=NULL; } }; class treap{ private: node *root; //指向根结点的头指针 public: treap(){ root=NULL; } treap(node *n){ root=n; } void insert(node * n); void print_tree(); void print_node(node * n); }; void treap::print_tree() { print_node(root); } void treap::print_node(node *n){ if(n!=NULL) { cout<<"("; print_node(n->lchild); cout<<n->data.first<<"/"<<n->data.second; print_node(n->rchild); cout<<")"; } } void treap::insert(node * n) { node * insert_pos; node * insert_pos_parent; node * index; // bool is_found; if (root==NULL) { root=n; return; } index=root; insert_pos_parent=NULL; insert_pos=NULL; while(index!=NULL) { if(index->data.second < n->data.second){ insert_pos=index; break; } insert_pos_parent=index; index=index->rchild; } if(insert_pos_parent==NULL) { n->lchild=root; root=n; return; } insert_pos_parent->rchild=n; n->lchild=insert_pos; } int main() { int count,i,number; string str; char c; pair<string,int> a[50000]; while (1) { cin>>count; if(count==0) break; for(i=0; i<count; i++) { str=""; while(cin>>c) { if(c!='/') str+=c; else{ cin>>number; a[i]=make_pair(str,number); break; } } } sort(a,a+count); /* for (i=0;i<count;i++) { cout<<a[i].first<<"**"<<a[i].second<<" "; } cout<<endl; */ treap tp; for (i=0;i<count;i++) { node *n=new node(); n->data=a[i]; tp.insert(n); } tp.print_tree(); cout<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator