CodeForces - 432D Prefixes and Suffixes ( kmp + dp )

深入解析.Net中SM2与sm-crypto的跨平台加解密实践 本文深入探讨了在.Net平台与前端sm-crypto库之间实现SM2国密算法跨平台加解密的实践方案。针对对接中常见的密钥格式、密文拼接顺序(C1C3C2与C1C2C3)等核心难点,提供了基于BouncyCastle的完整工具类实现、前后端联调示例及问题排查指南,旨在帮助开发者构建安全、兼容的数据加密通道。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

对所有,长度为 i 的,且存在一个长度为 i 的后缀与它相等的,这样一个前缀,输出长度以及出现次数。

思路

next 数组的应用,对于每个位置 i ,通过 next [ i ] ,可以知道长度为 next [ i ] 前缀在中间出现一次,因此可以倒序 dp 计算每个前缀出现的次数,然后通过 l = next [ l ] ( l 初始值 len ),遍历所有存在相等后缀的前缀 。
dp [ next [ i ] ] += dp [ i ] ( dp 初始值 1 , 因为前缀至少出现一次 )

代码
// Problem: Prefixes and Suffixes
// Contest: Virtual Judge - CodeForces
// URL: https://vjudge.net/problem/CodeForces-432D
// Memory Limit: 262 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int Next[maxn],dp[maxn];
string s;
vector<pii>v;

void getnext(string s,int len)
{
	int k=-1,j=0;
	Next[0]=-1;
	while(j<len)
	{
		if(k==-1||s[j]==s[k])
		{
			k++;
			j++;
			Next[j]=k;
		}
		else k=Next[k];
	}
}


int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	cin>>s;
	int len=s.size();
	getnext(s,len);
	for(int i=1;i<=len;i++) dp[i]=1;
	for(int i=len;i>=1;i--)
		dp[Next[i]]+=dp[i];
	int l=len;
	while(l)
	{
		v.push_back({l,dp[l]});
		l=Next[l];
	}
	cout<<v.size()<<endl;
	for(int i=v.size()-1;i>=0;i--)
		cout<<v[i].first<<" "<<v[i].second<<endl;
    return 0;
} 
基于深度学习的水质预测:多参数监测与预测 在本篇博客中,我们详细介绍了如何使用深度学习技术处理水质预测问题,包括数据集的准备与预处理、多层感知机模型的构建、模型的训练与评估以及模型优化策略。我们使用 Python 语言基于 TensorFlow 和 Keras 框架实现了模型,并给出了各种模型优化方法及对应代码。通过实践,我们可以发现深度学习技术在水质预测方面具有很好的应用潜力。在实际应用中,我们还可以根据具体问题和数据集进一步调整和优化模型,以获得更好的预测性能。 阅读详情

相关推荐

PCB设计实践(三十二)PCB设计遇到大电流时的设计技巧

本文系统阐述10A至数百安培PCB设计的六大关键技术。载流能力优化强调铜厚选择(2-4oz)、线宽计算及并联结构;热管理提出散热孔阵列、铜基板嵌入等方案;布局策略包括功率分区和低阻抗路径设计;材料工艺推荐铝基板、陶瓷基板等高效解决方案;安全设计涵盖电气隔离与保护电路;验证环节需结合热仿真与实测。典型150A电机驱动板案例显示,通过4oz铝基板、散热孔阵列等设计,可实现温升≤45℃的稳定运行。核心在于铜厚线宽协同、主动散热及严格验证。

致力于硬件设计、人工智能知识及技术的分享,不断鞭策自己成长,共同进步! 4229

CodeForces 432D (字符串,next数组)

题意: 给出一个字符串str,问前缀与后缀匹配的串在str中出现了几次。 思路: 前缀与后缀匹配就是next数组的意义,根据next数组可以从后往前统计出子串在母串中出现的次数。 代码: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;algorithm&gt; #include &lt;cstring&g...

陋室 498

python知网爬虫论文pdf下载+立即可用(动态爬虫)

python实现动态爬虫知网论文,搜索+自动翻页+下载 收集数据利器

Braylon的博客 5379

Codeforces 432D Prefixes and Suffixes kmp扩展操作,后缀数据结构

文章目录题意题解 problem redive 题意 求字符串中每一个相等前后缀的长度以及其在全字符串中出现的次数. 题解 本题非常精妙. 首先思考求长度.可以使用kmp和哈希算法,但是哈希不能求出出现次数,因此被消灭了. 那考虑kmp解决第一个问题. kmp中的next数组表示的是全字符串的第i个前缀中前后缀的最大匹配长度. 对于全串来说,长度为lenlenlen肯定是符合要求的,而next[len]next[len]next[len]必然也符合要求,同理next[next[len]]next[next[

Fuko_Ibuki的博客 1万+

Dify视觉模型节点避坑指南:我用Qwen2.5-VL做OCR识别时踩过的3个坑(及解决方案)

本文分享了使用Dify平台和Qwen2.5-VL视觉模型进行OCR票据识别时遇到的三个常见问题及解决方案,包括文件变量传递、结构化输出和条件分支判断失效。通过实战经验,帮助开发者优化多模态模型在财务自动化中的应用,提升OCR识别精度和效率。

weixin_29284885的博客 402

Qt中常见的面试题总结

基于Qt开发的一些常用面试题

一名热爱编程的程序员 8492

CodeForces - 432D Prefixes and Suffixes (KMP)

题目vj链接 题面: 题意: 给定一个字符串 SSS,计算 SSS 中前缀和后缀相等的串在 SSS 中出现了多少次。 按照长度递增的顺序输出 SSS 中前缀和后缀相等的串在 SSS 中出现的次数。 题解: 先统计对于每一个前缀 S[1,i]S[1,i]S[1,i] 在 SSS 中出现了多少次,然后通过跳 nt[i]nt[i]nt[i],找到前缀与后缀相等的串。 代码: #include<iostream> #include<cstdio> #include<cstdlib&

_Griefs 382

Vue - 快速入门,这一套就够了!(Vue core + 案例 + 效果演示)

前置条件:掌握 HTML、CSS、JavaScript、AJAX.工具:VsCode.插件:Live Server(浏览器实时预览)Ps:建议都提前下载下来,没网的时候也能用.

CYK_byte的博客 4万+

CodeForces 432D

这题也想了很久,智商捉急。求相同前缀和后缀在串中出现了多少次,用num数组表示出现了多少次,由于next数组树的性质,而且一定保证越后面的深度约大,所以先把num数组全赋值为1,然后再从后往前扫,num[nxt[i]]+=num[i]#include #include #define maxl 1000020 int n,tlen,cnt; int nxt[maxl],num[ma

binarycopycode 470

Spark Sql 连接mysql

转载请务必注明原创地址为:http://dongkelun.com/2018/03/21/sparkMysql/ 1、基本概念和用法(摘自spark官方文档中文版) Spark SQL 还有一个能够使用 JDBC 从其他数据库读取数据的数据源。当使用 JDBC 访问其它数据库时,应该首选 JdbcRDD。这是因为结果是以数据框(DataFrame)返回的,且这样 Spark SQL操作轻松或便......

主要分享大数据相关的知识,如Spark、Hudi 1万+

乐企归集能力说明文档V2.0006

纳税人销售货物、提供服务开具的增值税发票及购进货物、接受服务取得的增值税发票、海关缴款书(含出口转内销证明)、代扣代缴完税凭证,可以通过本能力进行归集。纳税人可将本能力中的各类规则和接口嵌入本单位信息化系统中(如:销售、报销、财务等),实现发票自动化归集,便于纳税人完成发票入账、抵扣、退税以及代办退税等操作,有效提升涉税业务办理效率。

记录点滴 573

Codeforces 432D

#include #include #include using namespace std; const int M = 1e5 + 10; char str[M]; int next[M], dp[M]; int l; int len[M]; void fail() { int i = 0; int j = -1; next[0] = -1; while(i < l)

u010621873的专栏 775

问答式AI vs 智能体(Agent):它们有什么不同?

你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

Johnny2004的专栏 446

Codeforces 432D Prefixes and Suffixes(KMP+dp)

题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求所有既是前缀串又是后缀串的字符串出现了几次。 解题思路:根据性质可以根据KMP算法求出所有的前后缀串,然后利用dp求解,dp[i]表示从1到i这个子串出现过的次数。转移方程dp[jump[i]]+=dp[i]。任意一个dp[i]的初始状态应该是1。 #include #

不慌不忙、不急不躁 2687

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Codeforces432 D. Prefixes and Suffixes(kmp+dp)

题意: 给定一个长度不超过1e5的字符串, 对于每种既是前缀又是后缀的子串,输出该子串出现的次数 解法: kmp可以计算出所有既是前缀又是后缀的子串长度: 一开始令temp=len,不断temp=nt[temp],中间出现的就是满足条件的长度(kmp问题,这里不详讲) 然后就是计算每种nt[i]在 code: ...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 317

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Codeforces 432D Prefixes and Suffixes:KMP + dp

题目链接:http://codeforces.com/problemset/problem/432/D 题意:   给你一个字符串s,让你找出所有既是前缀又是后缀的子串,并输出它们分别出现了多少次。 题解:   先对原串求一次nex数组。   然后枚举位置i:     sub(k)表示前缀s[0 to k]     dp[i]表示sub(i)在原串s中的出现次数  ...

a1392136的博客 273

Codeforces 432D Prefixes and Suffixes (kmp+dp)

发现这个水题 一眼就感觉是 \(kmp\), 因为 \(nxt\) 数组天生就是干这种事情的 答案集合就是从 \(n\) 跳 \(nxt\) 所能跳到的所有节点 那个出现次数怎么搞? 显然可以 \(dp\) \(dp[i]\) 表示跳到 \(i\) 的方案数 然后倒叙枚举 \(i\), \(dp[nxt[i]]+=dp[i]\) 然后就没了 #include <map> #i...

weixin_30484247的博客 250

Codeforces 432 D. Prefixes and Suffixes(KMP+DP)

You have a string s = s 1 s 2…s |s|, where |s| is the length of string s, and s i its i-th character. Let’s introduce several definitions: A substring s[i…j] (1 ≤ i ≤ j ≤ |s|) of string s is string s i s i + 1…s j. The prefix of string s of length l (1 ≤ l

tomjobs的博客 517

codeforces 432D Prefixes and Suffixes (kmp+dp)

题意: 给出一个串,求这个串种即使前缀又是后缀的子串在这个串出现的次数。 题解: 首先得到next数组,然后定义dp[i]表示长度为i的前缀出现的次数。很好理解了,dp[next[i]]+=dp[i],dp初始化为1。 #include #include #include #include #include #include #include #include using name

ACM之梦 751

codeforces432D Prefixes and Suffixes(kmp+dp)

转载请注明出处:http://www.cnblogs.com/fraud/ ——by fraud D. Prefixes and Suffixes You have a string s = s1s2...s|s|, where |s| is the length of string s, and si its i-th character. Let...

weixin_30730053的博客 199

Codeforces 432 D.Prefixes and Suffixes (Z Algorithm) / (KMP+dp)

题目链接: http://codeforces.com/contest/432/problem/D 题意: 给你一个字符串,找到所有前缀与后缀相同的位置,以及这个前缀在整个字符串出现的次数 ABACABA ==> pre: A suf:A ---> 1 4 在1这个位置有相同的后缀,A出现了4次        pre: ABA suf: ABA ----> ...

weixin_30387339的博客 127

Codeforces 432D Prefixes and Suffixes

题目链接:http://codeforces.com/problemset/problem/432/D 我觉得挺难。 emmm…没有觉得不难的。最近在练习kmp,这个题的第一问求前后缀的长度利用next数组我还是会的,关键是求出现的次数。 怎么说…我真的不会。然后看大量题解,也是千篇一律。大部分都是dp。由于我也不会dp而且讲解也模棱两可,我就凭借自己说服了自己,然后感觉接受了。其实知道了那个状态...

朝夕 378

CF432D Prefixes and Suffixes kmp+dp

原题:http://codeforces.com/contest/432/problem/D 题解:求所有前后缀相同的子串的个数。kmp中的nxt数组就是前后缀相等的最大长度,只要将j=nxt[nxt[i]]做到刚好大于0就行了。考虑dp有:f[i]表示1-i的字符串出现的个数,f[nxt[i]]+=f[i],所有应该从后往前扫描统计答案。 #include&lt;cstdio&gt; #i...

Exception 322

CodeForces 432D Prefixes and Suffixes

Description You have a strings = s1s2...s|s|, where|s|is the length of strings, andsiitsi-th character. Let's introduce several definitions: A substrings[i..j](1 ≤ i ≤ j ≤ |s|)o...

aims714563740的博客 299
上一篇: CodeForces - 948DPerfect Security ( 01字典树 )
下一篇: CodeForces - 852G Bathroom terminal ( 字典树 + dfs )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值