Codeforces 777D:Cloud of Hashtags(水题)

时间:2024-04-30 16:52:23

http://codeforces.com/problemset/problem/777/D

题意:给出n道字符串,删除最少的字符使得s[i] <= s[i+1]。

思路:感觉比C水好多啊,大概是题目比较难看懂吧。直接从后面往前扫,用后面的答案更新前面的答案。考虑如果后面的字符串比前面的大,那么直接保存当前的字符串,否则暴力扫一遍,前面的字符串大于后面的字符串的那一位直接跳出。

 #include <bits/stdc++.h>
using namespace std;
string s[];
string ans[];
int main() {
int n;
scanf("%d", &n);
for(int i = ; i <= n; i++) cin >> s[i];
ans[n] = s[n];
for(int i = n - , j; i >= ; i--) {
if(ans[i+] >= s[i]) { ans[i] = s[i]; continue; } int a = s[i].size(), b = ans[i+].size();
int len = min(a, b);
for(j = ; j < len; j++)
if(s[i][j] > ans[i+][j]) break;
for(int k = ; k < j; k++) ans[i] += s[i][k];
}
for(int i = ; i <= n; i++) cout << ans[i] << endl;
return ;
}