PAT 乙级 1065

PAT 乙级 1065 为了运行不超时做了好多优化。1、题目说了最后输出要按递增顺序所以一开始定义数组就可以定义 setstring但是这玩意输出比较麻烦要写 auto i v2.begin(); ……2、map.count() 找数据 比 find 找数据快很多所以两次找数据都用 map这样才能不超时。3、find 的两种用法从字符串里找子串v.find(v[i]) ! string :: npos;从数组里找元素find(v.begin(), v.end(), 目标元素);#includebits/stdc.h using namespace std; int main() { int n, m; cin n; string s1, s2; mapstring, string mapp; mapstring, int mapp1; for(int i 0; i n; i ) { cin s1 s2; mapp[s1] s2; mapp[s2] s1; } string s3; cin m; vectorstring v1(m); for(int i 0; i m; i ) { cin s3; v1[i] s3; mapp1[v1[i]] 1; } setstring v2; int flag 0; for(int i 0; i m; i ) { if(mapp.count(v1[i]) mapp1.count(mapp[v1[i]]) ); else v2.insert(v1[i]); } cout v2.size() endl; for(auto i v2.begin(); i ! v2.end(); i ) { if(flag 1) cout ; flag 1; cout *i; } return 0; }