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 |
Re:真不知道為什麼會Time Limit Exceeded,無語了In Reply To:真不知道為什麼會Time Limit Exceeded,無語了 Posted by:nowaits at 2014-04-19 19:23:06 > #include <iostream> > #include <list> > #include <string> > #include <map> > #include <algorithm> > // #include <Windows.h> > inline void translate(const std::map<char, char>& table, const std::string& input, std::string& output); > int main() { > int n = 0; > > std::cin>>n; > > // DWORD t = GetTickCount(); > std::list<std::string> strs; > std::map<std::string, int> mv; > > std::map<char, char> table; > table['A'] = table['B'] = table['C'] = '2'; > table['D'] = table['E'] = table['F'] = '3'; > table['G'] = table['H'] = table['I'] = '4'; > table['J'] = table['K'] = table['L'] = '5'; > table['M'] = table['N'] = table['O'] = '6'; > table['P'] = table['R'] = table['S'] = '7'; > table['T'] = table['U'] = table['V'] = '8'; > table['W'] = table['X'] = table['Y'] = '9'; > > std::string input; > std::string output; > > while(std::cin>>input) { > if(n -- > 0) { > translate(table, input, output); > > strs.push_back(output); > > mv[output] ++; > } else { > break; > } > } > > // std::cout<<"---"<<GetTickCount() - t<<std::endl; > > { > strs.clear(); > std::map<std::string, int>::const_iterator it = mv.begin(); > std::map<std::string, int>::const_iterator end = mv.end(); > while(it != end) { > strs.push_back(it->first); > it ++; > } > > strs.sort(); > } > > std::list<std::string>::const_iterator it = strs.begin(); > std::list<std::string>::const_iterator end = strs.end(); > bool has_duplicate = false; > while(it != end) { > if (mv[*it] > 1) { > std::cout<<*it<<" "<<mv[*it]<<std::endl; > has_duplicate = true; > } > it ++; > } > > if (!has_duplicate) > std::cout<<"No duplicates. "<<std::endl; > > // std::cout<<GetTickCount() - t<<std::endl; > return 0; > } > > inline void translate(const std::map<char, char>& table, const std::string& input, std::string& output) { > output.resize(8); > char* pHeader = &output[0]; > char* p = pHeader; > > for(int i = 0; i < (int)input.size() && p - pHeader < 8; i ++) { > char c = input[i]; > if (c >= '0' && c <= '9') { > *(p++) = c; > } else if (c >= 'A' && c <= 'Z') { > std::map<char, char>::const_iterator it = table.find(c); > > if (it != table.end()) > *(p++) = it->second; > } > > if (p - pHeader == 3) > *(p++) = '-'; > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator