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 |
为什么纯粹用STL总会让我超时呢,难道我想的太复杂了么。。。那位大牛帮帮我看看呗#include <iostream> #include <cstdio> #include <string> #include <algorithm> #include <map> #include <vector> #include <set> #include <functional> using namespace std; class G { private: int a; set<string> te; public: G(int aa=0,set<string> tee = set<string>()):a(aa),te(tee){} void insert(string & temp){ a++;te.insert(temp); } int geta(){return a;} set<string> &getset(){return te;} //bool operator <(G& en) //{ // return a>en.a ; // } }; class GG { private: int a; string b; set<string>c; public : GG(int aa=0,string bb="",set<string> cc = set<string>()):a(aa),b(bb),c(cc){} bool operator <(const GG& temp){ return a>temp.a||(a==temp.a&&b<temp.b); } int getaa() {return a;} string getst(){return b;} set<string>& getset(){return c;} }; int main() { map<string,G> gong; string en; map<string,G>::iterator it; while(cin>>en) { string temp = en; sort(en.begin(),en.end ()); it = gong.find (en); if(it!=gong.end ()) { it->second .insert (temp); } else { gong[en].insert (temp); } } typedef vector<GG> yang; yang yan; yang::iterator ri; for(it=gong.begin ();it!=gong.end ();++it) { yan.push_back (GG((*it).second .geta (),*((*it).second .getset().begin ()) ,(*it).second .getset())); } sort(yan.begin(),yan.end ()); int k=0; set<string>::iterator iit; for(ri= yan.begin ();ri!=yan.end ();++ri) { k++; if(k==6) break; else {cout<<"Group of size "<<(*ri).getaa () <<":"; for(iit=(*ri).getset().begin ();iit!=(*ri).getset().end ();++iit) { cout<<" "<<*iit; } cout<<" .\n"; } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator