Codeforces Round #401 (Div. 2) D. Cloud of Hashtags
题目链接:D. Cloud of Hashtags
题意:
给你n个字符串,让你删后缀,使得这些字符串按字典序排列,要求是删除的后缀最少
题解:
由于n比较大,我们可以将全部的字符串存在一个数组里面,然后记录一下每个字符串的开始位置和长度,然后从下面往上对比。
如果str[i][j]<str[i+1][j],直接退出,因为这里已经成为字典序。
如果str[i][j]>str[i+1][j],那么就把str[i][j]=0,表示从这里开始的后缀全部删掉。
str[i][j]==str[i+1][j]就继续寻找。
注意:数组要开N*3,因为包括结束符。
1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;++i) 3 using namespace std; 4 typedef long long ll; 5 6 const int N=5e5+7; 7 char str[N*3]; 8 int st[N],len[N],n,ed; 9 10 char find(int i,int j){return str[st[i]+j];} 11 12 inline void output(int s) 13 { 14 int now=s; 15 while(1) 16 { 17 if(!str[now])return; 18 putchar(str[now++]); 19 } 20 } 21 22 int main(){ 23 scanf("%d",&n); 24 F(i,1,n) 25 { 26 st[i]=ed; 27 scanf("%s",str+ed); 28 len[i]=strlen(str+ed); 29 ed+=len[i]+1; 30 } 31 for(int i=n-1;i>0;i--) 32 { 33 F(j,1,len[i]-1) 34 { 35 int tmp=find(i+1,j)-find(i,j); 36 if(tmp<0) 37 { 38 str[st[i]+j]=0; 39 break; 40 }if(tmp>0)break; 41 } 42 } 43 F(i,1,n)output(st[i]),puts(""); 44 return 0; 45 }
View Code
转载于:https://www.cnblogs.com/bin-gege/p/6443768.html
Codeforces Round #401 (Div. 2) D. Cloud of Hashtags相关推荐
- Codeforces Round #401 (Div. 2) D. Cloud of Hashtags(字符串 + 逆向思维)
D. Cloud of Hashtags 题意: 给你n个字符串,不能改变顺序,每个字符串可以选择从结尾删除连续的一段,使这n个字符串满足字典序从小到大的顺序.要求:删除的字符串尽量少. 题解: 最重 ...
- Codeforces Round #401 (Div. 2) D. Cloud of Hashtags(暴力)
D. Cloud of Hashtags time limit per test2 seconds memory limit per test256 megabytes inputstandard i ...
- Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 串
题目链接:http://codeforces.com/contest/777/problem/D 题解: 题意:给出n行字符串,对其进行字典序剪辑.我自己的想法是正向剪辑的,即先对第一第二个字符串进行 ...
- 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) E. Hanoi Factory 栈
E. Hanoi Factory 链接: http://codeforces.com/contest/777/problem/E 题解: 排序b从小到大,在b相同排序a从小到大,使其满足如果i-1不能 ...
- Codeforces Round #401 (Div. 1) C(set+树状数组)
题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
最新文章
- WebStorm下ReactNative代码提示设置
- 某程序员吐槽:31岁小姐姐拒绝条件优越的大厂程序员,只因身高不足163cm,难道矮是原罪?...
- 记录一次最新版MySQL-server-5.6.20-1.el6.x86_64.rpm的安装
- 谈谈NITE 2与OpenCV结合的第二个程序(提取人体骨骼坐标)
- PyQt5 技术篇-QWidget、QDialog程序窗口关闭closeEvent()触发事件方法重写
- MLCC噪声啸叫及对策
- 一篇文章让你轻松搞定SpringBoot和SpringCloud之间的版本选择!!!
- 临床观察性研究论文如何撰写“方法”?
- .Net Core 环境下构建强大且易用的规则引擎
- soa面向服务体系结构_服务和面向微服务的体系结构简介
- smarq v7 智器 v7 新手使用
- c语言的循环代码大全,循环 (C语言代码)
- dx逆向建模步骤_初级反求逆向建模(一)
- android:viewpager+photoview实现图片查看器
- 当前工作流管理中存在的问题
- win7系统64位系统怎么计算机配置,电脑装64位系统有什么要求|64位系统安装条件是什么...
- java-net-php-python-jspm智守护学生健康管理系统软件设计与开发计算机毕业设计程序
- Element-ui 日期选择器切换类型(type)
- 201521123037 《Java程序设计》第6周学习总结
- Android 渐变色背景样式
热门文章
- 深度学习与计算机视觉(四)反向传播及其直观理解
- html两个框架同时_两个框架的故事
- 使用Hexo搭建博客步骤详解
- vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
- 485通信原理_上位机开发之单片机通信实践
- rdd转换成java数据结构_如何将CSV文件转换为RDD
- Html页面上输出不了PHP,在页面上直接输出未经解析的HTML源码
- 北斗通信运营商_国内首个“北斗+5G”应用方案发布 配套5G产品将于年底量产上市...
- Unity SRP自定义渲染管线 -- 2.Custom Shaders
- java基础之ConcurrentHashMap