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

http://172.20.6.3/Problem_Show.asp?id=1542 dp+矩阵乘法思路hin好想,对于我这种题目稍微学术就几乎什么也不会的人来说唯一的难点在于读题,因为一心想着划水题目没有看清楚,样例wa了一会最后仔细读题发现自己g的操作看错了,非常智障了 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmat…
1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认为两座城堡位于同一条数轴上,Freda的城堡坐标是0,Rainbow的城堡坐标是N.正常情况 下,Freda会朝着同一个方向(即Rainbow的城堡相对于Freda的城堡的方向)走若干步之后来到Rainbow的城堡,而且步长都为1或2.可 是,今天Freda在途中遇见了来自上海的小猫Resodo,惊…
qwq真的是一道好题qwq自己做基本是必不可能做出来的. 首先,如果这个题目只是求一个\(f\)数组的话,那就是一道裸题. 首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同的方案的,那统计起来其实方便很多. 首先我们发现,对于\(i\)这个数,他可以拆出来\([1,m]\)任何一个数,接在对应的\(f[i-1]到f[i-m]\) 也就是说\(f[i]=f[i-1]+f[i-2]+f[i-3]....f[i-m]\) qwq那我们可以构造出转移矩阵 以\(m=3\)为栗…
组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. Output 一行一个整数代表答案. Sample Input 2 10007 2 0 Sample Output 8 HINT 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 Solution 首先,不难发…
序列计数 Time Limit: 30 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望,这n个数中,至少有一个数是质数.Alice想知道,有多少个序列满足她的要求. Input 一行三个数,n,m,p. Output 一行一个数,满足Alice的要求的序列数量,答案对20170408取模. Sample…
数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description Input 输入文件只有一行为用空格隔开的两个正整数N和M. Output 输出仅包含一个非负整数,表示Concatenate(1~N) MOD M的值. Sample Input 12345678910 1000000000 Sample Output 345678910 HINT 1<=N<=10^8 , 1<=M<…
Description 题目链接 Solution 容斥原理,答案为忽略质数限制的方案数减去不含质数的方案数 然后矩阵乘法优化一下DP即可 Code #include <cstdio> #include <algorithm> #include <cstring> #define N 120 using namespace std; const int MOD=20170408; int n,m,p,pri[2000010],cnt[N],top; bool vis[2…
1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4542  Solved: 2815[Submit][Status][Discuss] Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2..…
容易想到 这个环一定是简单环. 考虑如果是复杂环 那么显然对于其中的第一个简单环来说 要么其权值为负 如果为正没必要走一圈 走一部分即可. 对于前者 显然可以找到更小的 对于第二部分是递归定义的. 综上 这个环是一个简单环. 那么最多有n个点. 考虑枚举起点 然后 设f[i][j][k]表示从i到j经过k条边的最短路. 容易发现最终的答案为 f[i][i][w]<0 w. 不过这样做是n^4的. 考虑优化 容易想到二分 而上述状态其实本质上是一个矩阵乘法. 那么我们可以矩阵乘法在n^3logn的…
题意 题目链接 Sol 设\(f[i][j]\)表示前\(i\)个位置中,以\(j\)为结尾的方案数. 转移的时候判断一下\(j\)是否和当前位置相同 然后发现可以用矩阵优化,可以分别求出前缀积和逆矩阵的前缀积(这题的逆矩阵炒鸡好求) 这样就可以\(n*10^3\) 发现相邻两个矩阵只有一行不同,那么其他的可以直接copy. 就可以做到\(n*10^2\)了. #include<bits/stdc++.h> #define Pair pair<int, int> #define M…
题目分析 #include<bits/stdc++.h> #define MO 998244353 ; struct Matrix { ][]; void init(int c, int spe) { // printf("spe:%d\n",spe); a[][] = c, a[][] = , a[][] = 1ll*spe*c%MO; a[][] = , a[][] = , a[][] = ; a[][] = , a[][] = , a[][] = ; } }f[max…
诶这题洛谷居然没有??? 题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1444 题解: 我见到主要有三种做法. 一是矩阵乘法.设\(dp[t][i]\)表示时间\(t\)之后在AC自动机\(i\)节点的概率,那么转移是一个矩阵乘法的形式,构造转移矩阵\(f\), 如果\(u\)是某个串的结尾点,则\(f[u][u]=1,f[u][v]=0 (v\ne u)\), 否则直接按概率搞. 然后这个矩阵的\(t\)次幂就可以得到\(t\)…
4386: [POI2015]Wycieczki Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 197  Solved: 49[Submit][Status][Discuss] Description 给定一张n个点m条边的带权有向图,每条边的边权只可能是1,2,3中的一种.将所有可能的路径按路径长度排序,请输出第k小的路径的长度,注意路径不一定是简单路径,即可以重复走同一个点. Input 第一行包含三个整数n,m,k(1<=n<=40,1&…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1009 [题意] 给定一个字符串T,问长度为n且不包含串T的字符串有多少种. [思路] 设长度为i的串与T匹配长度为j,有转移式如下: f[i+1][j+1]+=f[i][j] f[i+1][k]+=f[i][j] 第一种是匹配成功,第二种是匹配失败.注意如果匹配失败匹配长度并不一定变为0,考虑如果匹配失败f[i][j]可以转移到哪,假设新字符为c,则可以用KMP算法预处理出fail数…
题目链接:BZOJ - 1009 题目分析 题目要求求出不包含给定字符串的长度为 n 的字符串的数量. 既然这样,应该就是 KMP + DP ,用 f[i][j] 表示长度为 i ,匹配到模式串第 j 位的字符串个数,然后转移就是可以从第 j 位加上一个字符转移到另一个位置. 然而..我并没有写过KMP + DP,我觉得还是写AC自动机+DP比较简单..于是,尽管只有一个模式串,我还是写了AC自动机+DP. 然后就是建出AC自动机,f[i][j] 表示长度为 i ,走到节点 j 的字符串的个数.…
题面 给定一棵 \(n\) 个点的树,点带点权. 有 \(m\) 次操作,每次操作给定 \(x,y\) ,表示修改点 \(x\) 的权值为 \(y\) . 你需要在每次操作之后求出这棵树的最大权独立集的权值大小. 题解 如题所示 , 是个模板题 ... 首先考虑静态 \(dp\) , 令 \(dp_{u,0/1}\) 为 \(u\) 不存在 / 存在 于最大权独立集的权值大小 . 然后转移很显然 , 一个点存在于独立集中时 , 儿子全都不能选 . 不存在时 , 儿子可选可不选 . 令 \(v\)…
题目链接 参考yww的题解.本来不想写来但是他有一些笔误...而且有些地方不太一样就写篇好了. 不知不觉怎么写了这么多... 另外还是有莫队做法的...(虽然可能卡不过) \(60\)分的\(O(n^2)\)做法就是,令\(f[i]\)表示以\(s[i]\)结尾的不同子序列个数,\(las[c]\)表示\(c\)字符上次出现的位置(没有出现过则为\(-1\)),转移是:\[f[i]=\begin{cases}2f[i-1]+1&,las[s[i]]=-1\\2f[i-1]-f[las[s[i]]…
目录 题目链接 题解 代码 题目链接 loj#2128. 「HAOI2015」数字串拆分 题解 \(f(s)\)对于\(f(i) = \sum_{j = i - m}^{i - 1}f(j)\) 这个可以用转移矩阵通过矩阵乘法处理出来 预处理出\(A[i][j]\)表示数S为\(j * 10 ^ i\)的转移矩阵 对于g的转移 \(g(i) = \sum_{j = 0}^{i - 1}g(j) * D(j + 1,i)\) D[i][j]表示第i位到底j位构成的数的f,(转移矩阵 对于g的转移也…
本文讲一下一些基本的矩阵优化DP的方法技巧. 定义三个矩阵A,B,C,其中行和列分别为$m\times n,n \times p,m\times p$,(其中行是从上往下数的,列是从左往右数的) $C_{i,j}=\sum_{k=1}^{n}A_{i,k}\times B_{k,j}$ 矩阵乘法具有结合律,但没有交换律,可以乘方.求逆. 做矩阵优化DP的题目步骤: $1\quad$把$DP$方程推出来(假如不能手推,可以先打$10$项左右的表,然后再写一个程序找每一项的系数,一般不会超过$5$项…
We consider problems concerning the number of ways in which a number can be written as a sum. If the order of the terms in the sum is taken into account the sum is called a composition and the number of compositions of n is denoted by c(n). Thus, the…
挺好的数位dp……先说一下我个人的做法:经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所有数的所有未包含最后一位的子串的和 s[i]:所有数的所有后缀子串的和 c[i]:所有数的所有后缀子串的个数 n[i]:所有数共有多少个他们的转移依次是(k为进制数)f[i]=f[i-1]*k+s[i-1]*ks[i]=s[i-1]*k*k+c[i-1]*k*(k-1)/2+n[i-1]*k*(k-1)…
题目描述 你有一个m点生命值的奴隶主,奴隶主受伤未死且当前随从数目不超过k则再召唤一个m点生命值的奴隶主. T次询问,每次询问如果如果对面下出一个n点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入第一行包含三个正整数 T,m,k ,T 表示询问组数,m,k 的含义见题目描述. 接下来 T 行,每行包含一个正整数 n ,表示询问进行 n 次攻击后扣减Boss的生命值点数的期望. 输出 输出共 T 行,对于每个询问输出一行一个非负整数,表示该询问的答案对 998244353 取模的结果.…
1.定义: $c[i][j]=\sum a[i][k]\times b[k][j]$ 所以矩阵乘法有条件,(n*m)*(m*p)=n*p 即第一个矩阵的列数等于第二个矩阵的行数,否则没有意义. 2.结合律与分配率 矩阵乘法不一定任何时候都有交换律.因为交换后甚至不能保证第一个矩阵的列数等于第二个矩阵的行数. 但是,矩阵乘法有结合律. A*B*C=A*(B*C) 这是一个最常用的运算律,使之可以用矩阵快速幂. 3.构造技巧. 矩阵乘法主要用途还是矩阵加速dp. 例如什么n=1e9之类的. 关键还是…
题解 这题是一道非常好的插头题,与一般的按格转移的题目不同,由于m很大,要矩阵乘法,这题需要你做一个按列转移的插头DP. 按列转移多少与按格转移不同,但大体上还是基于连通性进行转移.每一列只有右插头是对下一列的转移有影响的,那么我们只需要记录每一列的右插头的连通情况,用最小表示法表示为当前列的状态.在转移的时候,我们只知道上一列的右插头,即本列的左插头的情况,而上插头还需要自己记一个标记. 那么我们具体分析: 1.不存在上插头 1.同时存在左插头和右插头,不需要修改当前插头,直接把上一列的右插头…
题目描述 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决定按下述规则设计线路: 1.设共K辆公交车,则1到K号站作为始发站,N-K+1到N号台作为终点站. 2.每个车站必须被一辆且仅一辆公交车经过(始发站和终点站也算被经过).  3.公交车只能从编号较小的站台驶往编号较大的站台.  4.一辆公交车经过的相邻两个 站台间距离不得超过Pkm. 在最终设计线路之前,小Z想知道…
形态形成场(矩阵乘法优化dp) 短信中将会涉及前\(k\)种大写字母,每个大写字母都有一个对应的替换式\(Si\),替换式中只会出现大写字母和数字,比如\(A→BB,B→CC0,C→123\),代表 \(A=12312301231230,B=1231230,C=123\).现在对于给定的替换式,求字符 A 所代表的串有多少子串满足: 这个子串为单个字符\(0\)或没有前导\(0\). 把这个子串看作一个十进制数后模\(n\)等于\(0\). 答案对\(r\)取模.对于100%的数据,$2 \le…
题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数代表答案. 样例输入 2 10007 2 0 样例输出 8 题目大意 问从nk个数中选出若干个,且选出数的数目mod k=r的方案数 题解 dp+快速幂/矩阵乘法 题目描述是骗人的,一个一个加根本不可能加的过来. 关于矩阵乘法的题解可以参考 popoqqq大爷的博客 ,时间复杂度为O(k^3logn),…
题目描述 输入 第一行一个正整数,表示数据组数据 ,接下来T行每行一个正整数N 输出 2*T行第2*i-1行表示第i个数据中问题一的解, 第2*i行表示第i个数据中问题二的解, 样例输入 1 1 样例输出 1 2 题解 数位dp+矩阵乘法 $x\ xor\ 3x=2x$即$x\ xor\ 2x=3x$.而亦或的运算规则为“相同为0,不同为1”,也就是说当且仅当$a\ and\ b$不为0,即有共同的位是1时,$a\ xor\ b\neq a+b$. 所以如果$x$满足条件,则$x$与$2x$没有…
[BZOJ2510]弱题 Description 有M个球,一开始每个球均有一个初始标号,标号范围为1-N且为整数,标号为i的球有ai个,并保证Σai = M. 每次操作等概率取出一个球(即取出每个球的概率均为1/M),若这个球标号为k(k < N),则将它重新标号为k + 1:若这个球标号为N,则将其重标号为1.(取出球后并不将其丢弃) 现在你需要求出,经过K次这样的操作后,每个标号的球的期望个数. Input 第1行包含三个正整数N,M,K,表示了标号与球的个数以及操作次数. 第2行包含N个…
题目描述 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300)一共N个猪城.这些城市由M (1 <= M <= 44,850)条由两个不同端点A_j和B_j (1 <= A_j<= N; 1 <= B_j <= N)表示的双向道路连接.保证城市1至少连接一个其它的城市.一开始臭气弹会被放在城市1.每个小时(包括第一个小时),它有P/Q (1 <= P <=1,000,000; 1 <= Q <…