D. Cloud of Hashtags(逆向贪心)

   日期:2020-07-13     浏览:81    评论:0    
核心提示:这题正着来做很麻烦这么想,删掉后缀后,字符串的字典序只减不增这么想,删掉后缀后,字符串的字典序只减不增这么想,删掉后缀后,字符串的字典序只减不增所以,第n个字符串一定不会删后缀所以,第n个字符串一定不会删后缀所以,第n个字符串一定不会删后缀那么检查第n−1个后缀,删掉一些让它小于等于第n个字符串那么检查第n-1个后缀,删掉一些让它小于等于第n个字符串那么检查第n−1个后缀,删掉一些让它小于等于第n个字符串以此类推.........以此类推.........以此类推.........#include

这题正着来做很麻烦

这 么 想 , 删 掉 后 缀 后 , 字 符 串 的 字 典 序 只 减 不 增 这么想,删掉后缀后,字符串的字典序只减不增 ,,

所 以 , 第 n 个 字 符 串 一 定 不 会 删 后 缀 所以,第n个字符串一定不会删后缀 ,n

那 么 检 查 第 n − 1 个 后 缀 , 删 掉 一 些 让 它 小 于 等 于 第 n 个 字 符 串 那么检查第n-1个后缀,删掉一些让它小于等于第n个字符串 n1,n

以 此 类 推 . . . . . . . . . 以此类推......... .........

#include <bits/stdc++.h>
using namespace std;
const int maxn=5e5+10;
string s[maxn];
int n;
void run(int q,int w)
{
	//保证s[q]>=s[w]
	//因为s[q]应该比较大,所以是去删掉s[w]的一些后缀 
	if(s[q]>=s[w])	return;//字典序大于等于,满足条件了 
	int len1=s[w].length(),len2=s[q].length();
	for(int i=0;i<len1;i++)
	if(s[w][i]>s[q][i])
	{
		s[w].erase(i,len1-i);
		return;
	}
}
int main()
{
	std::ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> n;
	for(int i=1;i<=n;i++)	cin >> s[i];
	for(int i=n;i>=2;i--)	run(i,i-1); 
	for(int i=1;i<=n;i++)	cout<<s[i]<<"\n";
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服