题目链接:http://codeforces.com/contest/777/problem/D
题意:给出n行以#开头的字符串,从原字符串尾部删除尽量少的字符串,使其为非降序排列。
思路:我们可以从最后一个字符串着手,对其前面的字符串进行删除操作,使其不大于前者。遍历到第一个字符串时就得到了我们所需要的字符串啦。
代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3
4 const int MAXN=5e5+10;
5 string gg[MAXN];
6 char cc[MAXN];
7
8 int main(void){
9 // ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
10 int n;
11 cin >> n;
12 for(int i=0; i<n; i++){
13 scanf("%s", cc);
14 gg[i]=cc;
15 }
16 for(int i=n-2; i>=0; i--){
17 for(int j=0; gg[i][j]; j++){
18 if(gg[i][j]>gg[i+1][j]){
19 gg[i][j]='