D. Cloud of Hashtags
2021/9/30 6:11:11
本文主要是介绍D. Cloud of Hashtags,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目链接
题意:
\(n\)个以\(#\)开头的由小写字母组成的字符串,求删除最少字母数使得字符串\(s_i\)的字典序不大于\(s_{i+1}\).
思路:
从前往后不好比较,逆向思维。最后一个字符串字典序肯定尽可能大,即不删除字母,然后倒着模拟一下即可。
code:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <algorithm> #include <queue> #include <vector> #include <deque> #include <cmath> #include <ctime> #include <map> #include <set> #include <unordered_map> #define fi first #define se second #define pb push_back #define endl "\n" #define debug(x) cout << #x << ":" << x << endl; #define bug cout << "********" << endl; #define all(x) x.begin(), x.end() #define lowbit(x) x & -x #define fin(x) freopen(x, "r", stdin) #define fout(x) freopen(x, "w", stdout) #define ull unsigned long long #define ll long long const double eps = 1e-15; const int inf = 0x3f3f3f3f; const ll INF = 0x3f3f3f3f3f3f3f3f; const double pi = acos(-1.0); const int mod = 1e9 + 7; const int maxn = 5e5 + 10; using namespace std; string s[maxn]; int n; int main(){ ios::sync_with_stdio(false), cin.tie(0); cin >> n; for(int i = 1; i <= n; i ++)cin >> s[i]; for(int i = n - 1; i >= 1; i --){ int len = s[i].size(); for(int j = 0; j < len; j ++){ if(s[i][j] < s[i + 1][j])break; else if(s[i][j] > s[i + 1][j] || j >= s[i].size()){ s[i].erase(j); break; } } } for(int i = 1; i <= n; i ++)cout << s[i] << endl; return 0; }
这篇关于D. Cloud of Hashtags的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升