LOJ#3103. 「JSOI2019」节日庆典

能当最小位置的值一定是一个最小后缀,而有用的最小后缀不超过\(\log n\)个

为什么不超过\(\log n\)个,看了一下zsy的博客。。

假如\(i = AAB\),\(j = AB\),\(B\)是\(A\)的一个严格前缀,\(|j| < |i| < 2|j|\)

但是有\(k = B\),导致了若\(j\)比\(i\)优,则\(k\)会比\(j\)优,\(j\)比\(k\)优,则\(i\)会比\(j\)优,那么\(j\)就没用了

然后取这\(\log\)里最大的就是一段后缀和开头比较,可以预处理出每个串和开头的lcp,用扩展kmp

#include <bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define space putchar(' ')
#define enter putchar('\n')
#define eps 1e-10
#define ba 47
#define MAXN 5005
//#define ivorysi
using namespace std;
typedef long long int64;
typedef unsigned int u32;
typedef double db;
template<class T>
void read(T &res) {res = 0;T f = 1;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {res = res * 10 +c - '0';c = getchar();}res *= f;
}
template<class T>
void out(T x) {if(x < 0) {x = -x;putchar('-');}if(x >= 10) {out(x / 10);}putchar('0' + x % 10);
}
char s[3000006];
int L,lcp[3000006];
bool cmp(int l0,int r0,int l1,int r1) {if(r0 < l0) return true;if(r1 < l1) return false;int l = min(lcp[l0],min(r1,r0 - l0 + 1));if(s[l0 + l] <= s[l1 + l]) return true;return false;
}
void Solve() {scanf("%s",s + 1);L = strlen(s + 1);lcp[1] = L;int p = 0,r = 0;for(int i = 2 ; i <= L ; ++i) {int t = 0;if(r >= i) t = min(r - i + 1,lcp[i - p + 1]);while(i + t <= L && s[t + 1] == s[i + t]) ++t;lcp[i] = t;if(r < i + t - 1) {p = i;r = i + t - 1;}}vector<int> f;f.clear();for(int i = 1 ; i <= L ; ++i) {vector<int> g;g.clear();g.pb(i);for(auto t : f) {while(g.size() && s[t + i - g.back()] < s[i]) g.pop_back();if(g.size() == 0 || s[t + i - g.back()] == s[i]) {while(g.size() && i - t + 1 <= 2 * (i - g.back() + 1)) g.pop_back();g.pb(t);}}f = g;int res = f[0];for(int j = 1 ; j < f.size() ; ++j) {if(cmp(f[j] + i - res + 1,res - 1,1,res - f[j] - 1)) res = f[j];}out(res);space;}enter;
}
int main(){
#ifdef ivorysifreopen("f1.in","r",stdin);
#endifSolve();
}

转载于:https://www.cnblogs.com/ivorysi/p/11011869.html

【LOJ】#3103. 「JSOI2019」节日庆典相关推荐

  1. LOJ #3103. 「JSOI2019」节日庆典

    题意 给定字符串 \(S\) ,对于 \(S\) 的每个前缀 \(T\) 求 \(T\) 所有循环同构串的字典序最小的串,输出其起始下标.(如有多个输出最靠前的) \(|S| \le 3 \times ...

  2. 「JSOI2019」节日庆典 (Z-Algorithm)

    传送门 考虑一个后缀 Si...nS_{i...n}Si...n​,如果加上一个任意字符 ccc 可以使得 Si...ncS_{i...n}cSi...n​c 为字典序最小的后缀,那么将其称为好后缀, ...

  3. 【LOJ3103】「JSOI2019」节日庆典

    [题目链接] 点击打开链接 [思路要点] 考虑一种暴力维护候选点集的做法. 即,在字符串不断增长的同时,若已经可以确定 TiT_iTi​ 不再可能成为字典序最小的循环后缀,则将 iii 在候选点集中删 ...

  4. Loj #2568. 「APIO2016」烟花表演

    Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...

  5. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  6. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  7. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  8. loj#2143. 「SHOI2017」组合数问题

    loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西. ∑i=0n(nkik+r)=∑i=0n(nki)[i≡r(modk)]\sum_{i=0} ...

  9. LOJ#2542. 「PKUWC2018」随机游走

    LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...

最新文章

  1. jq常用过滤器_Jquery过滤器
  2. day06:02oracle体系结构_存储结构
  3. Linux文件属性和权限
  4. 记一次安装docker的坑
  5. 在Android Native层中创建Java虚拟机实例
  6. AIX进程监控与管理
  7. 构造函数内部原理 包装类
  8. Java String常用的数据类型转换
  9. 终极教程,带具体实验现象,1个GPIO控制2个LED显示4种状态,欢迎讨论!
  10. oracle ro,ORACLE学习笔记一
  11. mysql典型安装和自定义_Mysql8.0.19下载安装—windows版本自定义安装
  12. amd860k能装黑苹果吗_想用黑苹果?这些硬件不要买(内附支持列表)
  13. 网抑云音乐.ncm加密格式转换mp3
  14. EHS法律法规的收集渠道
  15. linux 3 4文件管理ppt,第8单元-Linux系统文件查找与文件管理.ppt
  16. EXCEL中输入的数字无法正常显示变成科学计数法
  17. 浙大吴飞与贾扬清经典十问!
  18. ie浏览器代理设置方法 怎么给IE浏览器设置代理?
  19. 一次 TLS SNI 问题
  20. Respones请求重定向

热门文章

  1. 2021考研历程总结
  2. 用Python分析张同学dy评论数据
  3. VMD读取trr轨迹的方法
  4. 计算机辅助教育中的教学评价,计算机辅助教育的评价.ppt
  5. c语言程序设计 长春大学,“C语言程序设计”双语教学改革研究.pdf
  6. C语言面试题汇总(华为公司)
  7. AUTOCAD学习笔记7:单相桥式整流滤波电路的绘制
  8. 德州仪器-TPS54302芯片(4.5V~28V降压至5V,抑制雷击浪涌电流,工作功率低功耗)
  9. poj 3323 Matrix Power Series (矩阵乘法 非递归形式)
  10. Python爬虫--智联招聘职位和公司信息爬取