http://172.20.6.3/Problem_Show.asp?id=1542

dp+矩阵乘法思路hin好想,对于我这种题目稍微学术就几乎什么也不会的人来说唯一的难点在于读题,因为一心想着划水题目没有看清楚,样例wa了一会最后仔细读题发现自己g的操作看错了,非常智障了

代码

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
const long long modn=;
char ch[maxn];
int m,n;
struct mat{
long long e[][];
mat(){memset(e,,sizeof(e));}
void cle(){
for(int i=;i<=m;i++)e[i][i]=;
}
};mat ten[],f[maxn][maxn],g[maxn];
mat mul(mat x,mat y){
mat z;
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
for(int k=;k<=m;k++){
z.e[i][j]+=x.e[i][k]*y.e[k][j];
z.e[i][j]%=modn;
}
}
}
return z;
}
mat plu(mat x,mat y){
mat z;
for(int i=;i<=m;i++){
for(int j=;j<=m;j++){
z.e[i][j]=x.e[i][j]+y.e[i][j];
z.e[i][j]%=modn;
}
}
return z;
}
mat pow(mat x,long long k){
mat z;z.cle();
while(k){
if(k&)z=mul(x,z);
k/=;x=mul(x,x);
}
return z;
}
int main(){
scanf("%s%d",&ch,&m);n=strlen(ch);
ten[].cle();
for(int i=;i<m;i++)ten[].e[i][i+]=;
for(int i=;i<=m;i++)ten[].e[m][i]=;
for(int i=;i<=;i++)ten[i]=pow(ten[],i);
for(int i=n;i>=;i--){
f[i][i-].cle();
for(int j=i;j<=n;j++){
int z=ch[j-]-'';
f[i][j]=mul(pow(f[i][j-],),ten[z]);
}
}g[n+].cle();
for(int i=n;i>=;i--){
for(int j=i;j<=n;j++){
g[i]=plu(g[i],mul(g[j+],f[i][j]));
}
}
printf("%I64d\n",g[].e[m][m]);
return ;
}

JZYZOJ 1542 [haoi2015]str 矩阵乘法 dp的更多相关文章

  1. Codevs 1305 Freda的道路(矩阵乘法 DP优化)

    1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...

  2. 洛谷3176 [HAOI2015]数字串拆分 (矩阵乘法+dp)

    qwq真的是一道好题qwq自己做基本是必不可能做出来的. 首先,如果这个题目只是求一个\(f\)数组的话,那就是一道裸题. 首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同 ...

  3. 【BZOJ4870】组合数问题 [矩阵乘法][DP]

    组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行有四个整数 n ...

  4. 【BZOJ4818】【SDOI2017】序列计数 [矩阵乘法][DP]

    序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Alice想要得到一个长度为n的序 ...

  5. 【BZOJ2326】【HNOI2011】数学作业 [矩阵乘法][DP]

    数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Input 输入文件只有一行为用空 ...

  6. [Bzoj4818]序列计数(矩阵乘法+DP)

    Description 题目链接 Solution 容斥原理,答案为忽略质数限制的方案数减去不含质数的方案数 然后矩阵乘法优化一下DP即可 Code #include <cstdio> # ...

  7. bzoj1009 [HNOI2008] GT考试 矩阵乘法+dp+kmp

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4542  Solved: 2815[Submit][Statu ...

  8. 4.28 省选模拟赛 负环 倍增 矩阵乘法 dp

    容易想到 这个环一定是简单环. 考虑如果是复杂环 那么显然对于其中的第一个简单环来说 要么其权值为负 如果为正没必要走一圈 走一部分即可. 对于前者 显然可以找到更小的 对于第二部分是递归定义的. 综 ...

  9. loj#6074. 「2017 山东一轮集训 Day6」子序列(矩阵乘法 dp)

    题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩 ...

随机推荐

  1. PHP正则 贪婪匹配与非贪婪匹配

    $str = ".abcdeabcde"; preg_match('/a.+?e/', $str, $match); print_r($match); Array ( [0] =& ...

  2. 关于cocos2d-x 中 CCEditBox 的输入位置和IOS虚拟键盘位置不重合的bug

    这个文章的名字起的实在是有点长,主要是怕说不清楚. 在IOS上,输入时,我看到过的比较少,就两种,如附件两张图.一个是虚拟键盘的输入框完全是在CCEditBox上,另一张虚拟键盘的输入区域是紧挨着键盘 ...

  3. zabbix的命令执行

    1.对于低版本的可用下列exp直接打到用户 http://119.29.48.232/zabbix/httpmon.php?applications=2 and (select 1 from (sel ...

  4. html中的meta标签

    1.定义 meta元素提供页面的原信息,位于文档头部 2.必须的属性 content属性 该属性提供名称/值对中的值,使用要与http-equiv或name属性一起使用 3.可选的属性 3.1.htt ...

  5. servlet线程不安全

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAE9CAIAAABY1Yv/AAAgAElEQVR4nOy9eVxN2/8/viuaU5kqZW

  6. Perl6 Bailador框架(8):自定义400/500

    第一种方法, 直接写在源码中: use Bailador; get '/' => sub { '<h1>hello, Bailador</h1>'; } get '/te ...

  7. SQL注入之逗号拦截绕过

    目前所知博主仅知的两个方法 1.通过case when then 2.join [一]case when then mysql,,,,,,, ) ) end; +----+-----------+-- ...

  8. js作用域与上下文

    作用域:与调用函数,访问变量的能力有关 作用域分为:局部和全局(在局部作用域里可以访问到全局作用域的变量,但在局部作用域外面就访问不到局部作用里面所设定的变量) 上下文:与this关键字有关 是调用当 ...

  9. java===java基础学习(6)---流程控制,for,if,switch,continue,break

    注意点: for循环的用法和python截然不同,注意格式 switch~,switch对应的case每当执行完毕都要break,由于基本不怎么用switch,所以作为了解. 中断流程控制语句,请考虑 ...

  10. jython

    # -*- coding: utf-8 -*- import sys import json sys.path += ["C:/Users/yangbo/Desktop/restassure ...