1305. GT考试

1305. GT考试

题意:

准考证长度为n位,不吉利数字有m位,问不出现不吉利数字的准考证有多少种,答案mod K

题解:

动态规划+kmp+矩阵快速幂
设dp[i][j]表示长度为i,且不包含S串,且末尾部分与S串的前缀匹配的最大长度是j的所有字符串的集合
S串为不吉利数字

在这里插入图片描述
现在相同部分为j,再黄色串后面再添加一个新数,有10种选择0~9,
如果添加的正好等于红色对应部分,那j++
如果不等于,就重新匹配最长部分,该如何快速匹配?用kmp的next数组,k=next[k],实现快速匹配最长长度
转移方程:
dp[i+1][k]+=dp[i][k]
在这里插入图片描述
我们现在考虑两层状态之间的关系,即dp[i+1][…]与dp[i][…]的关系,我们可以列出这个式子
dp[i+1,0]=a00 * dp[i,0] +a01 * dp[i,1]…+
dp[i+1,1]=a10 * dp[i,0] + a11 * dp[i,1]+…+
在这里插入图片描述
而这些a可以组成一个矩阵A
由此可以得到:
dp[i+1] = dp[i] *A
所以dp[n] = f[n-1] *A =…=F[0] * An
F[0]表示长度为0的情况,F[0] = 1
A怎么得到?我们已经说过, dp[i+1][k]+=dp[i][k],也就是dp[i+1] = dp[i] *A,所以我们就把dp[i][k]加到对应的小a上即可,也就是动态规划里的状态我们加到A矩阵里,然后A求n-1次幂(矩阵快速幂)

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b)
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=35;
int n,m,mod;
char str[maxn];
int ne[maxn];
int a[maxn][maxn];
void mul(int c[][maxn],int a[][maxn],int b[][maxn])
{static int t[maxn][maxn];memset(t,0,sizeof(t));for(int i=0;i<m;i++){for(int j=0;j<m;j++){for(int k=0;k<m;k++){t[i][j]=(t[i][j]+a[i][k]*b[k][j])%mod;}}}memcpy(c,t,sizeof(t));
}
int qmi(int k)
{int f0[maxn][maxn]={1};while(k){if(k&1)mul(f0,f0,a);//f0=f0*amul(a,a,a);//a=a*ak>>=1;}int res=0;for(int i=0;i<m;i++)res=(res+f0[0][i])%mod;return res; 
}
int main()
{cin>>n>>m>>mod;cin>>str+1;for(int i=2,j=0;i<=m;i++){while(j&&str[j+1]!=str[i])j=ne[j];if(str[j+1]==str[i])j++;ne[i]=j; }//初始化A矩阵 for(int j=0;j<m;j++){for(int c='0';c<='9';c++){int k=j;while(k&&str[k+1]!=c)k=ne[k];if(str[k+1]==c)k++;if(k<m)a[j][k]++;}}//F[n]=F[0]*A^ncout<<qmi(n)<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core IdentityServer4实战 第二章-OpenID Connect添加用户认证

内容&#xff1a;本文带大家使用IdentityServer4进行使用OpenID Connect添加用户认证作者&#xff1a;zara(张子浩) 欢迎分享&#xff0c;但需在文章鲜明处留下原文地址。在这一篇文章中我们希望使用OpenID Connect这种方式来验证我们的MVC程序&#xff08;需要有IdentityServe…

[CF/AT]各大网站网赛 体验部部长第一季度工作报告

文章目录CodeForces#712 (Div. 1)——1503A. Balance the BitsB. 3-ColoringC. Travelling Salesman ProblemD. Flip the Cards108 (Rated for Div. 2)——1519A. Red and Blue BeansB. The Cake Is a LieC. Berland RegionalD. Maximum Sum of ProductsE. Off by OneCodeforce…

G - Tiling FZU - 2040(未解决)

G - Tiling FZU - 2040 题意&#xff1a; m * n的矩阵&#xff0c;通过任意大小的矩阵&#xff0c;有多少种填充方式&#xff1f; 图片为3 * 2的矩阵有如下填充方式&#xff1a; 题解&#xff1a; 矩阵快速幂 目前还没参透 代码:

P7520-[省选联考 2021 A 卷]支配

正题 题目链接:https://www.luogu.com.cn/problem/P7520 题目大意 给出nnn个点mmm条边的一张有向图&#xff0c;一号点为起始点&#xff0c;qqq次独立的询问加入一条边后有多少个点的支配集发生了变化。 1≤n≤3000,1≤m≤2n,1≤q≤21041\leq n\leq 3000,1\leq m\leq 2\times…

11.16 模拟:总结

220pts 100100020 整体还可以&#xff0c;虽然T3挂掉了&#xff0c;但T1T2做出来还是不错的 问题&#xff1a; 开局审错了题&#xff01;T2调了太久T3写挂了白给了40… &#xff08;我临交前就觉得T3细节这么多很可能挂还检查了一遍&#xff09; 只能说我的直觉很灵敏了 这…

C# 8 的新提案:new 关键字类型推断

在很多情况下&#xff0c;一个地方只允许出现一种可能的类型。C# 仍然要求你明确列出类型&#xff0c;但如果目标类型“new”表达式提案被采用&#xff0c;那么就不再需要这些样板代码。从表面上看&#xff0c;这个特性看起来与 var 关键字恰好相反。它不是根据表达式推断出变量…

CF1540B Tree Array(期望,dp)

解析 关于合理的实现 这题卡在最后的小破dp是我没想到的 一开始看到200的数据范围就不禁笑出了声 lca直接On求&#xff01; 然后就开始大力分类讨论 然后就卡在了一个问题上 两个栈AB&#xff0c;分别有a和b个元素&#xff0c;随机从两个栈中弹出一个元素&#xff0c;求最后A栈…

pjudge#21614-[PR #1]守卫【Kruskal生成树,费用流】

正题 题目链接:http://pjudge.ac/problem/21614 题目大意 给出一张nnn个点mmm条边的一张图&#xff0c;有kkk个守卫&#xff0c;每个守卫都有一个点集SSS表示这个守卫可以被派遣到这个点集中的某个点&#xff0c;然后你可以选择一些边删除&#xff0c;要求使得每个点都恰好和…

I - The Mad Mathematician FZU - 2042(未解决)

I - The Mad Mathematician FZU - 2042 题意&#xff1a; 给你一段伪代码&#xff1a;如图 现在给你A&#xff0c;B&#xff0c;C&#xff0c;D&#xff0c;E&#xff0c;的具体值&#xff0c;问你sum是多少 0<A,B,C,D,E<263-1 题解&#xff1a; 数位dp&#xff1f;…

程序员修仙之路--高性能排序多个文件

点击上方蓝色字体&#xff0c;关注我们菜菜呀&#xff0c;昨天晚上班级空间崩溃了程序员主力 Y总what&#xff1f;菜菜我看服务器上写了很多个日志文件&#xff0c;我看着太费劲了&#xff0c;能不能按照日期排序整合成一个文件呀&#xff1f;程序员主力 Y总Y总要查日志呀&…

CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)

解析 比较复杂的一道题 看数据范围&#xff0c;我们肯定要从种类很少的颜色入手 因为第二种加边方式和颜色密切相关 所以设计disi,kdis_{i,k}disi,k​表示 i 号节点到颜色为 k 的节点的最小步数 通过对每个k bfs一遍就能得出答案 然后两个点之间的距离就可以写出转移式&#…

P5366-[SNOI2017]遗失的答案【状压dp,FWT】

正题 题目链接:https://www.luogu.com.cn/problem/P5366 题目大意 给出一个n,G,Ln,G,Ln,G,L。 qqq次询问在1∼n1\sim n1∼n中选择若干个数字并且数字xxx必选&#xff0c;要求这些数的gcdgcdgcd为GGG且lcmlcmlcm为LLL的方案数。 1≤n,G,L,x≤108,1≤q≤1051\leq n,G,L,x\leq 1…

2017ACM/ICPC广西邀请赛

2017ACM/ICPC广西邀请赛&#xff08;感谢广西大学&#xff09; 题号题目考点难度AA Math Problem数论签到题BColor itCCounting StarsDCoveringECS Course思维 &#xff0c;二进制思维题FDestroy Walls最大生成树GDuizi and Shunzi思维题HLaw of CommutationIMatching in a Tr…

【.NET Core项目实战-统一认证平台】第十四章 授权篇-自定义授权方式

上篇文章我介绍了如何强制令牌过期的实现&#xff0c;相信大家对IdentityServer4的验证流程有了更深的了解&#xff0c;本篇我将介绍如何使用自定义的授权方式集成老的业务系统验证&#xff0c;然后根据不同的客户端使用不同的认证方式来集成到统一认证平台。.netcore项目实战交…

CF1500C Matrix Sorting(拓扑排序)

解析 神仙题 我想到了一部分&#xff0c;但是由于没想到倒着做&#xff0c;后面越想越复杂… 本题的关键是要倒着想 考虑最后一次排序的列x 必须是单调不增的 否则直接错 然后倒数第二列y 必须在x列相等的段内单调不增&#xff0c;因为这些地方x无法起到排序的作用 同理再到倒…

P8292-[省选联考 2022]卡牌【状压,容斥】

正题 题目链接:https://www.luogu.com.cn/problem/P8292 题目大意 有nnn张卡牌&#xff0c;第iii张上的数字是sis_isi​。mmm次询问给出cic_ici​个质数&#xff0c;要求选择一些卡使得这些卡的乘积是这些质数的倍数&#xff0c;求方案数。 1≤n≤106,1≤si≤2000,1≤m≤1500…

D - Covering HDU - 6185(未解决完)

D - Covering HDU - 6185 题意&#xff1a; 4 * n的地板&#xff0c;有无数个1 * 2 和2 * 1 的砖块&#xff0c;问有多少方式填满&#xff1f; 1≤n≤10^18 题解&#xff1a; 矩阵快速幂 代码&#xff1a;

.NET-记一次架构优化实战与方案-前端优化

前言上一篇《.NET-记一次架构优化实战与方案-梳理篇》整理了基本的业务知识&#xff0c;同时也罗列了存在的问题&#xff0c;本篇主要是针对任务列表的页面进行性能优化。该篇主要涉及的是代码实现上的优化&#xff0c;实现上的问题是战术债务&#xff0c;也就是我们平常出现的…

11.17 模拟:总结

解析 50pts 50000 最后一次模拟 …说不出太多好话来 口罩、核酸、没样例、最困的点、T4诡异的题面和莫名其妙的链接…可以说是天时地利人和全都没的一干二净了 但有一说一今天的题&#xff08;除了T4&#xff09;都还是不错的&#xff0c;虽然难的要死&#xff0c;但是大部分…

GDOI2022游记

文章目录Day -1Day 0Day 1Day 2Day 3()Day ?~?Day ?Day -1 考前好像写题状态不太好&#xff08;可能是纯粹的懒&#xff09;。 开始写板子&#xff0c;很多算法都很久没碰了&#xff0c;有的调了很久才过。树剖都调了一个多小时&#xff0c;身败名裂。不过想想省选应该不怎…