D Cloud of Hashtags Codeforces Round #401 (Div. 2)
Cloud of Hashtags
【题目链接】Cloud of Hashtags
&题意:
给你一个n,之后给出n个串,这些串的总长度不超过5e5,你要删除最少的单词(并且只能是后缀),使得这些串是按字典序排列的.
&题解:
这也是个水题,当然了,是在你能想到的情况下,然而我还是没想到.
首先你要推出一个结论:最后一行是绝对不可以删的.
你也许会想的这种情况:
#c
#c
#a
如果删了最后一个,那么前2个c就不用删了,但这是错的,因为空字符比a还要小,你如果把a删了,那么你就必须把前面2个c删了,这样才能符合条件.
如果你能推出这个,那就快a了这题了.
之后想到的就是,根据最后一个,向上两两比较,比较完后修改上面的那个,之后继续向上向上两两比较.
最后根据你记录的长度输出答案即可.
&代码:
#include <cstdio>
#include <cmath>
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
using ll=long long;
const int maxn= 5e5 +9;
int n;
string s[maxn];
int v[maxn];
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
// freopen("C:\\Users\\Zmy\\Desktop\\in.txt", "r", stdin);
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
v[i]=s[i].size();
}
for(int i=n-1;i>0;i--){
string a=s[i],b=s[i-1];
if(a<b){
int p=min(v[i],v[i-1]);
for(int j=0;j<p&&a[j]>=b[j];j++){
v[i-1]=j+1;
}
s[i-1]=s[i-1].substr(0,v[i-1]);
}
}
for(int i=0;i<n;i++){
s[i].resize(v[i]);
cout<<s[i]<<'\n';
}
return 0;
}
D Cloud of Hashtags Codeforces Round #401 (Div. 2)的更多相关文章
- Codeforces Round #401 (Div. 2) 离翻身就差2分钟
Codeforces Round #401 (Div. 2) 很happy,现场榜很happy,完全将昨晚的不悦忘了.终判我校一片惨白,小董同学怒怼D\E,离AK就差一个C了,于是我AC了C题还剩35 ...
- Codeforces Round #401 (Div. 2) A,B,C,D,E
A. Shell Game time limit per test 0.5 seconds memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 字符串
题目链接:http://codeforces.com/contest/777/problem/D 题解: 题意:给出n行字符串,对其进行字典序剪辑.我自己的想法是正向剪辑的,即先对第一第二个字符串进行 ...
- 【贪心】Codeforces Round #401 (Div. 2) D. Cloud of Hashtags
从后向前枚举字符串,然后从左向右枚举位. 如果该串的某位比之前的串的该位小,那么将之前的那串截断. 如果该串的某位比之前的串的该位大,那么之前那串可以直接保留全长度. 具体看代码. #include& ...
- Codeforces Round #401 (Div. 2) C Alyona and Spreadsheet —— 打表
题目链接:http://codeforces.com/contest/777/problem/C C. Alyona and Spreadsheet time limit per test 1 sec ...
- Codeforces Round #401 (Div. 2)
和FallDream dalao一起从学长那借了个小号打Div2,他切ABE我做CD,我这里就写下CD题解,剩下的戳这里 AC:All Rank:33 小号Rating:1539+217->17 ...
- C Alyona and Spreadsheet Codeforces Round #401(Div. 2)(思维)
Alyona and Spreadsheet 这就是一道思维的题,谈不上算法什么的,但我当时就是不会,直到别人告诉了我,我才懂了的.唉 为什么总是这么弱呢? [题目链接]Alyona and Spre ...
- Codeforces Round #401 (Div. 2) A B C 水 贪心 dp
A. Shell Game time limit per test 0.5 seconds memory limit per test 256 megabytes input standard inp ...
- Codeforces Round #401 (Div. 1) C(set+树状数组)
题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...
随机推荐
- [No0000133]c# ERROR:“.”(十六进制值 0x00)是无效的字符
December 24, 2013 c# exception “.”(十六进制值 0x00)是无效的字符. 解决方法:常见于socket方式连接(包括HTTP方式)等.报文交互时候,对方会在字符串后面 ...
- 小心踩雷,一次Java内存泄漏排查实战
1.使用 jstack pid > jstack.log 保存了线程栈的现场,使用 jmap -dump:format=b,file=heap.log pid 保存了堆现场: https://m ...
- 【编译原理】c++实现词法分析器
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...
- =[Mathematics] 数学主题
https://www.douban.com/group/maths/ 圆锥体体积公式的证明
- LeetCode 292 Nim Game 解题报告
题目要求 You are playing the following Nim Game with your friend: There is a heap of stones on the table ...
- 2018/09/17《涂抹MySQL》【性能优化及诊断】学习笔记(七)
读 第十三章<MySQL的性能优化与诊断> 总结 一说性能优化,整个人都像被打了鸡血一样
- Javascript 面向对象编程(一):封装 作者:yuan一峰
学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学习笔记,希望对大 ...
- node2vec应用记录
1.已有写好的python代码,可以直接下载调用,GitHub链接https://github.com/aditya-grover/node2vec/blob/master/requirements. ...
- ES6 --- JS异步编程的几种解决方法及其优缺点
导言: 我们都知道 JS 是单线程的,这也正是异步编程对于 JS 很重要的原因,因为它无法忍受耗时太长的操作.正因如此有一系列的实现异步的方法. 方法一 setTimeout 常用于:定时器,动画 ...
- linux export source