蓝桥杯游园安排

#include<iostream> #include<vector> #include<algorithm> using namespace std; const int maxn = 1e6+10; const int INF = 0x3f3f3f3f; vector<string> v; vector<string> rec; int path[maxn]; int main(void) { char ch; string s; cin >> ch; s = ch; while(cin >> ch) { if(ch>='A'&&ch<='Z')v.push_back(s),s = ch; else s+=ch; } v.push_back(s); rec.push_back(""); for(int i = 0;i<v.size();i++) { if(v[i]>rec.back()) { rec.push_back(v[i]); path[i] = rec.size()-1; } else { int u = lower_bound(rec.begin(),rec.end(),v[i])-rec.begin(); path[i] = u; rec[u] = v[i]; } } int m = rec.size()-1; vector<string> vv; for(int i = v.size()-1;i>=0;i--) { if(m==path[i]) { vv.push_back(v[i]); m--; } } for(int i = vv.size()-1;i>=0;i--) cout << vv[i]; return 0; }
计算机小白记录学习过程,喜欢就点个推荐和关注吧O(∩_∩)O哈哈~

浙公网安备 33010602011771号