题目链接:https://pintia.cn/problem-sets/994805148990160896/problems/994805154748940288

用后缀数组求出长度为n所有子字符串的大小关系,然后得出重复最多的。

算法:后缀数组

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<set>
#define maxn 1100000
using namespace std;
int n;
int sa[maxn], ranks[maxn];
int height[maxn];
int t1[maxn], t2[maxn];
int c[maxn];
string s;
int m;
bool cmp(int *r, int a, int b, int l) {return r[a] == r[b] && r[a + l] == r[b + l];
}
void da(int t) {int p;m = s.length();int *x = t1, *y = t2;for (int i = 0; i < t; i++) {c[i] = 0;}for (int i = 0; i < m; i++) {c[x[i] = s[i]]++;}for (int i = 1; i < t; i++) {c[i] += c[i - 1];}for (int i = m - 1; i >= 0; i--) {sa[--c[x[i]]] = i;}for (int k = 1; k <= m;) {p = 0;for (int i = m - k; i < m; i++) {y[p++] = i;}for (int i = 0; i < m; i++) {if (sa[i] >= k) {y[p++] = sa[i] - k;}}for (int i = 0; i < t; i++) {c[i] = 0;}for (int i = 0; i < m; i++) {c[x[y[i]]]++;}for (int i = 1; i < t; i++) {c[i] += c[i - 1];}for (int i = m - 1; i >= 0; i--)sa[--c[x[y[i]]]] = y[i];swap(x, y);p = 1;x[sa[0]] = 0;for (int i = 1; i < m; i++) {x[sa[i]] = cmp(y, sa[i - 1], sa[i], k) ? p - 1 : p++;}if (p >= m)break;t = p;k = k << 1;if (k >= n){for (int i = 0; i < m; i++) {ranks[sa[i]] = i;}break;}}
}
void getheight() {int k = 0;for (int i = 0; i < m; height[ranks[i++]] = k) {if (k)--k;if (ranks[i] == 0) {height[ranks[i]] = 0;continue;}for (int j = sa[ranks[i] - 1]; s[i + k] == s[j + k];) {k++;if (k >= n) {k = n; break;                              }}}
}
int main() {cin >> n;cin.get();getline(cin, s);da(128);getheight();int h = sa[0], _h = -1;int ans = 1, ans1 = 1;for (int i = 1; i < m; i++) {if (height[i] >= n) {ans++;}else {if (ans > ans1||(_h==-1)||(ans==ans1&&s[h]<s[_h])) {ans1 = ans;_h = h;}ans = 1, h = sa[i];}}if (ans > ans1 || (ans == ans1 && s[h] < s[_h])) {ans1 = ans; _h = h;}cout << s.substr(_h, n) << " " << ans1 << endl;return 0;
}

PAT (Top Level) Practice1005 Programming Pattern (35 分)相关推荐

  1. PAT (Top Level) Practise 1008 Airline Routes(Tarjan模版题)

    1008. Airline Routes (35) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue Given a ...

  2. PAT顶级 1003 Universal Travel Sites (35分)(最大流)

    题目链接: 1003 Universal Travel Sites (35分) 思路: 题目问stationstationstation的最小容量,变相就是问最多能一次性出发多少人,使得过程中不会超过 ...

  3. PAT (Basic Level) Practice1005 继续(3n+1)猜想

    1005 继续(3n+1)猜想 一.题目 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇 ...

  4. PAT顶级 1016 Uniqueness of MST (35分)(判断最小生成树是否唯一)

    添加链接描述 Given any weighted undirected graph, there exists at least one minimum spanning tree (MST) if ...

  5. PAT (Advanced Level) Practice 1166 Summit (25 分)

    题目 因为只是判断是否是直接相连,所以觉得直接用暴力模拟,而且数据范围也很小.果然,许久不练题,A题的效率都下降了.不过,练题真的是打发时间的好途径. #include <bits/stdc++ ...

  6. PAT (Advanced Level) Practice 1043 Is It a Binary Search Tree (25 分) 凌宸1642

    PAT (Advanced Level) Practice 1043 Is It a Binary Search Tree (25 分) 凌宸1642 题目描述: A Binary Search Tr ...

  7. 1001 害死人不偿命的(3n+1)猜想 (15分) PAT (Basic Level) Practice (中文)C语言版

    PAT (Basic Level) Practice (中文) 1001 害死人不偿命的(3n+1)猜想 (15分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一 ...

  8. PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) 凌宸1642 题目描述: With the 2010 FIFA World Cu ...

  9. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

最新文章

  1. Intellij IDEA 将工程转换成maven工程 详解
  2. JAVA语言教学重点_《JAVA语言》教学大纲
  3. 字符串转为小数点,乘以一个数以后,转换为科学计数法,再把科学计数法转化为字符串
  4. Java 小故事系列 导航
  5. import cv2找不到模块的解决方法
  6. GitHub之GitHub Actions的项目自动化持续集成和部署
  7. 使用vue-seamless-scroll自动滚动插件复制出来的数据点击事件无效的解决办法
  8. 要闻君说:facebook迎来“全球宕机”惊险时刻;吸引大牛!拼多多成立了技术委员会;胡晓明卸任庚接任,阿里云计算迎来法人变更...
  9. 计算机电缆检测报告,天联牌计算机电缆详细介绍
  10. 计算机中用于表示储存,计算机中用来表示存储器容量的基本单位是
  11. javafx实现简单的计时器
  12. java oop 题目_JavaOOP试题JavaOOP试题.doc
  13. PPASR流式与非流式语音识别
  14. Paython基础讲解(1)
  15. 中选择语句如何并列_如何做好诗歌鉴赏中的选择题
  16. 请你谈谈TCP协议与UDP协议的区别
  17. URL缩短器:详细说明
  18. 实例检索︱图像的实例搜索(文献、方法描述、商业案例)
  19. Linux ls 命令学习和简单使用
  20. Android 手机上安装并运行 Ubuntu 12.04

热门文章

  1. 春季心动款外套搭配 彩色小西装令气质飙升 - 七丽女性网
  2. 阿里云服务器学生版无法远程
  3. SQL Server数据库设计
  4. SpringMVC:基于POJO接收请求参数
  5. 启明星辰 鸿蒙,启明星辰(002439)个股分析_牛叉诊股_同花顺财经
  6. UWA学堂课程推荐:深度剖析PersistentManager.Remapper内存占用
  7. 领跑新能源车市“下半场”,这家企业凭什么?
  8. velocity的简介
  9. 解放号使能软件产业 贡献数字中国!
  10. unity之版本控制ignore文件