题目链接: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相关推荐

  1. Codeforces Round #401 (Div. 2) D. Cloud of Hashtags(字符串 + 逆向思维)

    D. Cloud of Hashtags 题意: 给你n个字符串,不能改变顺序,每个字符串可以选择从结尾删除连续的一段,使这n个字符串满足字典序从小到大的顺序.要求:删除的字符串尽量少. 题解: 最重 ...

  2. 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 ...

  3. Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 串

    题目链接:http://codeforces.com/contest/777/problem/D 题解: 题意:给出n行字符串,对其进行字典序剪辑.我自己的想法是正向剪辑的,即先对第一第二个字符串进行 ...

  4. 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 ...

  5. Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈

    E. Hanoi Factory 链接: http://codeforces.com/contest/777/problem/E 题解: 排序b从小到大,在b相同排序a从小到大,使其满足如果i-1不能 ...

  6. Codeforces Round #401 (Div. 1) C(set+树状数组)

    题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...

  7. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  8. 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 ...

  9. 构造 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 的例子可以 ...

最新文章

  1. WebStorm下ReactNative代码提示设置
  2. 某程序员吐槽:31岁小姐姐拒绝条件优越的大厂程序员,只因身高不足163cm,难道矮是原罪?...
  3. 记录一次最新版MySQL-server-5.6.20-1.el6.x86_64.rpm的安装
  4. 谈谈NITE 2与OpenCV结合的第二个程序(提取人体骨骼坐标)
  5. PyQt5 技术篇-QWidget、QDialog程序窗口关闭closeEvent()触发事件方法重写
  6. MLCC噪声啸叫及对策
  7. 一篇文章让你轻松搞定SpringBoot和SpringCloud之间的版本选择!!!
  8. 临床观察性研究论文如何撰写“方法”?
  9. .Net Core 环境下构建强大且易用的规则引擎
  10. soa面向服务体系结构_服务和面向微服务的体系结构简介
  11. smarq v7 智器 v7 新手使用
  12. c语言的循环代码大全,循环 (C语言代码)
  13. dx逆向建模步骤_初级反求逆向建模(一)
  14. android:viewpager+photoview实现图片查看器
  15. 当前工作流管理中存在的问题
  16. win7系统64位系统怎么计算机配置,电脑装64位系统有什么要求|64位系统安装条件是什么...
  17. java-net-php-python-jspm智守护学生健康管理系统软件设计与开发计算机毕业设计程序
  18. Element-ui 日期选择器切换类型(type)
  19. 201521123037 《Java程序设计》第6周学习总结
  20. Android 渐变色背景样式

热门文章

  1. 深度学习与计算机视觉(四)反向传播及其直观理解
  2. html两个框架同时_两个框架的故事
  3. 使用Hexo搭建博客步骤详解
  4. vue根据url获取内容axios_vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据...
  5. 485通信原理_上位机开发之单片机通信实践
  6. rdd转换成java数据结构_如何将CSV文件转换为RDD
  7. Html页面上输出不了PHP,在页面上直接输出未经解析的HTML源码
  8. 北斗通信运营商_国内首个“北斗+5G”应用方案发布 配套5G产品将于年底量产上市...
  9. Unity SRP自定义渲染管线 -- 2.Custom Shaders
  10. java基础之ConcurrentHashMap