博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[洛谷P4341][BJWC2010]外星联络
阅读量:7106 次
发布时间:2019-06-28

本文共 734 字,大约阅读时间需要 2 分钟。

题目大意:给你一个长度为$n(n\leqslant3\times10^3)$的字符串,要你求出其中出现次数大于$1$的子串,并按字典序输出次数。

题解:建$SAM$后求出每个点的$size$,最后按字典序$dfs$一遍即可,这题$n$这么小,直接$O(n^2)$在$trie$上把每个点经过次数求出来,深搜即可。

卡点:

 

C++ Code:

#include 
#include
#define maxn 3005#define N (maxn * maxn)int n, nxt[N][2], cnt[N], idx;char s[maxn];void insert(char *s) { static int rt; rt = 0; for (; *s; ++s) { int &nxt = ::nxt[rt][*s & 1]; if (!nxt) nxt = ++idx; ++cnt[rt = nxt]; }}void dfs(int rt) { if (cnt[rt] > 1) printf("%d\n", cnt[rt]); if (nxt[rt][0]) dfs(nxt[rt][0]); if (nxt[rt][1]) dfs(nxt[rt][1]);}int main() { scanf("%d%s", &n, s); for (int i = 0; i < n; ++i) insert(s + i); dfs(0); return 0;}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/10349664.html

你可能感兴趣的文章
系统空闲时间 解决 GetLastInputInfo 负数问题
查看>>
云搜索服务在APP搜索场景的应用
查看>>
怎样设置域名带www和不带www都可以访问
查看>>
二元关系最小割
查看>>
Linux 下四条高大命令(计划360检测脚本)
查看>>
Android:Activity(六):Fragment详解
查看>>
tensorflow中张量、常量、变量、占位符
查看>>
在ajax请求后台时在请求标头RequestHeader加token
查看>>
SRM 408(1-250pt, 1-500pt)
查看>>
UGUI 之 控件以及按钮的监听事件系统 存档
查看>>
批量给文件或者文件夹重命名
查看>>
springMVC常用注解
查看>>
ORACLE SQL基础
查看>>
day58——Saltstack二次开发(二)
查看>>
各种算法
查看>>
asp.net文章内容分页方法
查看>>
NGUI 界面自适应
查看>>
一起学Django之Day01
查看>>
css垂直居中
查看>>
单元测试
查看>>