当前位置: 首页 > news >正文

【题解】洛谷 P4051 [JSOI2007] 字符加密 [后缀数组]

没有学过后缀数组可以看这个:【详细注释 | 字符串算法集合 2】后缀自动机 SAM & 后缀数组 SA-CSDN博客


P4051 [JSOI2007] 字符加密 - 洛谷 (luogu.com.cn)

说实话,挺板的。

复制一份字符串在后面,成一个新的字符串,把每个后缀求 sa 后缀数组。

最后按排名输出就好了。

需要注意的是这题要开四倍,因为本来 sa 模板 + k 那里就得开两倍,这题还得 * 2。

#include<bits/stdc++.h>
using namespace std;const int N = 4e5 + 10;
char s[N];
int n, m;
int c[N], sa[N], x[N], y[N];void get_sa() {int i, j, k;memset(c, 0, sizeof(c));for (i = 1; i <= n; i ++) {c[x[i] = s[i]] ++;}for (i = 1; i <= m; i ++) {c[i] += c[i - 1];}for (i = n; i >= 1; i --) {sa[c[x[i]]] = i;c[x[i]] --;}for (k = 1; k <= n; k <<= 1) {memset(c, 0, sizeof(c));for (i = 1; i <= n; i ++) {y[i] = sa[i];}for (i = 1; i <= n; i ++) {c[x[y[i] + k]] ++;}for (i = 1; i <= m; i ++) {c[i] += c[i - 1];}for (i = n; i >= 1; i --) {sa[c[x[y[i] + k]]] = y[i];c[x[y[i] + k]] --;}memset(c, 0, sizeof(c));for (i = 1; i <= n; i ++) {y[i] = sa[i];}for (i = 1; i <= n; i ++) {c[x[y[i]]] ++;}for (i = 1; i <= m; i ++) {c[i] += c[i - 1];}for (i = n; i >= 1; i --) {sa[c[x[y[i]]]] = y[i];c[x[y[i]]] --;}for (i = 1; i <= n; i ++) {y[i] = x[i]; }for (m = 0, i = 1; i <= n; i ++) {if (y[sa[i]] == y[sa[i - 1]] && y[sa[i] + k] == y[sa[i - 1] + k]) {x[sa[i]] = m;}else {m ++;x[sa[i]] = m;}}if (n == m) {break; }}
}int main () {ios::sync_with_stdio(false);cin.tie(0);cin >> s + 1;n = strlen(s + 1);for (int i = n + 1; i <= 2 * n; i ++) {s[i] = s[i - n];}n *= 2;m = 400;get_sa();for (int i = 1; i <= n; i ++) {if ( sa[i] <= (n / 2) ) {cout << s[sa[i] + n / 2 - 1];}}cout << "\n";return 0;
}

http://www.dtcms.com/a/423523.html

相关文章:

  • 免费 网站建设火车头 wordpress接口
  • 【MYSQL 】SQL 行列转换实战:如何用 CASE WHEN 与 SUM/MAX 重塑部门表
  • 网站申请支付宝支付网站关键词选取的方法
  • 最新版谷歌浏览器Axure插件(免翻墙)
  • 网站加载特效代码开源镜像网站开发
  • 虚拟串口工具vspd
  • 从入门到精通【Redis】理解Redis事务
  • Android16 wifi启动后自动连接的第一个wifi分析和修改
  • 【C++STL :vector类 (一) 】详解vector类的使用层vector实践:算法题练习
  • 做淘宝用那些网站发货如何进行电子商务网站推广
  • 语言是火,视觉是光:论两种智能信号的宿命与人机交互的未来
  • Java应用实例:三角形判断(向量叉积、海伦公式)、分数序列求和
  • Go Modules 包管理 (Go 模块)
  • Go基础(⑦实例和依赖注入)
  • 网站建设绩效考核方案ppt网页开发背景与意义
  • 【数据结构】基础知识
  • Fluttercon EU 2025 :Let‘s go far with Flutter
  • go-commons/stringutils 与标准库 strings 对比
  • 长春网站推广方式seo综合查询国产
  • 探索3D空间的视觉基础模型系列
  • 自建营销型企业网站怎么建设公益网站
  • C# 基于halcon的视觉工作流-章40-OCR训练识别
  • OCR API-智能文字识别技术,从“手动录入”到“智慧识别”的跨越
  • 收到网站代码后怎么做设计素材模板
  • JWT (JSON Web Token) 综合指南
  • 【笔记】在WPF中Binding里的详细功能介绍
  • html 滚动条相关开发经验总结
  • C++基础:(六) 内存管理深度解析:从分布到实现
  • BUUCTF get_started_3dsctf_2016 wp
  • 成都网站制作设计网页设计实训报告心得体会