题目描述 穿越了森林,前方有一座独木桥,连接着过往和未来(连接着上一题和下一题...). 这座桥无限长. 小 Q 在独木桥上彷徨了.他知道,他只剩下了 N 秒的时间,每一秒的时间里,他会向 左或向右移动一步. N 秒之后,小 Q 恰在桥上某一特定位置,且他每两次经过此位置的时间间隔不会超过 M 秒. 那么问题来了,这 N 秒的时间里,小 Q 的路线总共会有多少种可能的形式. 输入 文件第一行两个正整数 N.M,如题目所描述 输出 输出一个整数,表示可能的路线数量最终模 1000000007 的结…
题目链接: https://www.luogu.org/problemnew/show/P1707 分析: 洛谷的一道原创题,对于练习矩阵加速递推非常不错. 首先我们看一下递推式: \(a[k+2]=p*a[k+1]+q*a[k]+b[k+1]+c[k+1]+r*k^2+t*k+1;\) \(b[k+2]=u*b[k+1]+v*b[k]+a[k+1]+c[k+1]+w^k;\) \(c[k+2]=x*c[k+1]+y*c[k]+a[k+1]+b[k+1]+z^k+k+2;\) 有点吓人,我想在做…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 求方案数,想到DP: 因为两个站间距离<=p,所以每p个站中所有车一定都会停靠至少一次,借此设计状态为p个站的停靠状态: 状压一下,1表示有车,0表示没有车,每个状态只有k个1: 这样就可以转移了,后一个状态可以是前一个中的一辆车移动了过来,状态数+=前一个状态: 但这样没有规律,同一个状态中不同的1出现的顺序不同,会导致出现重复: 所以需要人为规定一个顺序,这里设计为p位中最后一位…
Pendant Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1032    Accepted Submission(s): 535 Problem Description On Saint Valentine's Day, Alex imagined to present a special pendant to his girl f…
https://www.vijos.org/p/1067 非常easy推出递推式f[n] = f[n-1]+f[n-2]+......+f[n-k]. 构造矩阵的方法:构造一个k*k的矩阵.当中右上角的(k-1)*(k-1)的矩阵是单位矩阵,第k行的每一个数分别相应f[n-1],f[n-2],,f[n-k]的系数.然后构造一个k*1的矩阵,它的第i行代表f[i](1 <= i <= k),是经过直接递推得到的.设ans[][]是第一个矩阵的n-k次幂乘上第二个矩阵.f[n]就是ans[k][1…
题目传送门 题目大意:计算数列a的第n项,其中: \[a[1] = a[2] = a[3] = 1\] \[a[i] = a[i-3] + a[i - 1]\] \[(n ≤ 2 \times 10^9)\] 一般的递推是O(n)的,显然时间和空间都不能承受. 由于每一步递推都是相同的.这句话包含了2个层面:首先,递推式是相同的:其次,递推的条件也要是相同的.综合来说,每一步的递推都是相同的.这是应用矩阵加速递推的充分条件. 那么怎么进行矩阵加速呢?我们首先观察,第\(i\)项和哪些项有关? 与…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive sequences. In each turn, the cows would stand in a line, while John writes two positive numbers…
题目链接:传送门 描述石头游戏在一个 $n$ 行 $m$ 列 ($1 \le n,m \le 8$) 的网格上进行,每个格子对应一种操作序列,操作序列至多有 $10$ 种,分别用 $0 \sim 9$ 这 $10$ 个数字指明.操作序列是一个长度不超过 $6$ 且循环执行.每秒执行一个字符的字符串.每秒钟,所有格子同时执行各自操作序列里的下一个字符.序列中的每个字符是以下格式之一:数字 $0 \sim 9$:表示拿 $0 \sim 9$ 个石头到该格子.$NWSE$:表示把这个格子内所有的石头推…
题目链接:传送门 题目大意: 求斐波那契数列第n项F(n). (F(0) = 0, F(1) = 1, 0 ≤ n ≤ 109) 思路: 用矩阵乘法加速递推. 算法竞赛进阶指南的模板: #include <iostream> #include <cstring> using namespace std; ; ], ][]) { ]; memset(c, , sizeof c); ; j < ; j++) { ; k < ; k++) { c[j] = (c[j] + 1…
题意: 已知: 当x<10时:f(x)=x 否则:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + --+ a9 * f(x-10); 求:f(x)%m的值. 思路: 矩阵快速幂加速递推. 嗯嗯 // by SiriusRen #include <cstdio> #include <cstring> using namespace std; int cases,k,ans,a[10][10],mod; struct matrix…
题解见X姐的论文 矩阵乘法递推的优化.仅仅是mark一下. .…
Luogu 1962 斐波那契数列(矩阵,递推) Description 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1) = 1 f(2) = 1 f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数) 请你求出 f(n) mod 1000000007 的值. Input 第 1 行:一个整数 n Output 第 1 行: f(n) mod 1000000007 的值 Sample Input 5 Sample Output 5 Http Luogu:htt…
Ipad,IPhone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 100 Accepted Submission(s): 46   Problem Description In ACM_DIY, there is one master called “Lost”. As we know he is a “-2Dai”, which me…
题目链接:https://vjudge.net/problem/UVA-11464 一道比较好的题目. 思路如下: 如果我们枚举每一个数字“变”还是“不变”,那么需要枚举$2^{255}$种情况,很显然不行. 那么我们就来优化一下:我们只枚举第一行的数,然后根据计算得出第二.三....行的数. 这样复杂度就优化到了$O(2^n\times n^2)$. 然后用$A[][]$和$B[][]$分别表示变化前后的矩阵. 那么现在的问题就简化成了如何枚举第一行和如何递推. 枚举第一行:运用了状压的思想,…
Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后,天渐渐黑了, 珠江边上的建筑全亮起了灯,好看得不要不要的,于是小 Z 决定搭乘游艇从西 边的广州港沿着珠江夜游到小蛮腰脚下.小 Z 的游艇一路向东,可小 Z 却感觉 船动得出奇的慢,一问船家才知道,原来今天珠江上堵船了. 我们可以把供游艇航行的航道看作一条单行道,航道上 N+1 艘游艇自西 向东依次…
题目描述  要开运动会了,Freda承担起了制作全校旗帜的工作.旗帜的制作方法是这样的:Freda一共有C种颜色的布条,每种布条都有无数个,你可以认为这些布条的长.宽.厚都相等,只有颜色可能不同.每个旗帜都是由一些布条横向拼接起来的,如图所示,图上所示的是一面红.黄.蓝三种颜色布条拼接的旗帜: 就不给你看图 布条数目不同的旗帜显然是不同的.对于布条数目都为T的两面旗帜,如果存在从左到右第i(0<i<=N)个布条颜色不同,那么就认为这两面旗帜是不同的.旋转或翻转后才相同的旗帜被认为是不同的旗帜,…
时间:2019.10.5 考试时间:100分钟(连正式考试时间的一半还没有到)题目:由于某些原因不能公开. 由于第一次接触NOIinux系统所以连怎么建文件夹,调字体,如何编译都不知道,考试的前半小时全在摸索这些. 等大概会用了就只剩下70min了.感觉要爆零. 我当时很着急T1:我用了个数学O(1)方法做了,但样例太水了,怕错(我当时哪有时间对拍)就写了一个70分O(nlogn)暴力兜底,果然那数学方法错了. 一看表,woc,只有40min了,赶紧看T2:算式还要用字符串读入在分拆,先把正好复…
题目链接:传送门 题目: 题目描述 小L有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为1~N(<=N<=^).他的环形花园每天都会换一个新花样,但他的花园都不外乎一个规则,任意相邻M(<=M<=,M<=N)个花圃中有不超过K(<=K<M)个C形的花圃,其余花圃均为P形的花圃. 例如,N=,M=,K=.则 CCPCPPPPCC 是一种不符合规则的花圃: CCPPPPCPCP 是一种符合规则的花圃. 请帮小L求出符合规则的花园种数Mod 由于请您编写一个程序解…
Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 Input 输入两个整数M,N.1<=M<=10^8,1<=N<=10^12 Output 可能越狱的状态数,模100003取余 Sample Input 2 3 Sample Output 6 HINT 6种状态为(000)(001)(011)(100)(110)(111) 分析 注意一…
\(\color{#0066ff}{题解}\) 然后a,b,c通过矩阵加速即可 为什么1出现偶数次3没出现的贡献是上面画绿线的部分呢? 考虑暴力统计这部分贡献,答案为\(\begin{aligned}\sum_{2|i}C_n^i*3^{n-i}\end{aligned}\) 显然如果没有\(\sum\)下面的限制,它就是一个生成函数\((x+3)^n\) 相当于我们只取偶数项 可以用单位根反演 把\(\omega_2^1,\omega_2^2\)分别代入\((x+3)^n\) 得到的就是2倍的…
题目链接:传送门 题目: Recursive sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Submission(s): Problem Description Farmer John likes to play mathematics games with his N cows. Recently, they are attracted…
平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方法. Cayley-Hamilton theorem: 记矩阵A的特征多项式为f(x). 则有f(A)=0. 证明可以看 维基百科 https://en.wikipedia.org/wiki/Cayley–Hamilton_theorem#A_direct_algebraic_proof 另外我在高…
2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] Description Input 输入文件最多包含25组测试数据,每个数据仅包含一行,有一个整数p(1<=p<=109),表示战场的图形周长.p=0表示输入结束,你的程序不应当处理这一行. Output 对于每组数据,输出仅一行,即满足条件的战场总数除以987654321的余数. Sample I…
4547: Hdu5171 小奇的集合 Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: 175  Solved: 85[Submit][Status][Discuss] Description 有一个大小为n的可重集S,小奇每次操作可以加入一个数a+b(a,b均属于S),求k次操作后它可获得的S的和的最大 值.(数据保证这个值为非负数) Input 第一行有两个整数n,k表示初始元素数量和操作数,第二行包含n个整数表示初始时可重集的元素. 对于100…
题意:有一个递推式f(x) 当 x < 10    f(x) = x.当 x >= 10  f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 * f(x-10) 同时ai(0<=i<=9) 不是 0 就是 1: 现在给你 ai 的数字,以及k和mod,请你算出 f(x)%mod 的结果是多少 思路:线性递推关系是组合计数中常用的一种递推关系,如果直接利用递推式,需要很长的时间才能计算得出,时间无法承受,但是现在我们已知…
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 列共 64 个街 区,现在已知新基站需要建设在哪些街区,用字符“#”表示,而不需要建设基 站的街区用“.”表示. 爸爸告诉小 Z 说,建设基站最耗时的是基站两两之间互相通信的调试,每 建设一个新的基站,需要确保其与其他已经建好的基站之间能互相通信,若两 个基站的坐标分别为(x1,y1)和(x2,y…
自己看吧: 爆搜代码: //春水初涨-春林初盛-春风十里-不如你 //----hzwer // 这是啥子题,读不懂-- //题意有问题 -- #include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #include<map> #define mod 998244353 #define N 100000 using namespace std; int n,…
多项式,因为每次的x相同,所以把a和b相加就行了,然后找对称轴,找离对称轴最近的整数点,然而我却写了个暴力,没看x #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const int N = 100005; inline int read() { int x = 0 , f = 1; char ch = getchar…
[题目描述] 小 Z 打算趁着暑假,开启他的旅行计划.但与其他同学不同的是,小 Z 旅 行时并不关心到达了哪个网红景点打了哪些卡.小 Z 更关注沿路的风光,而且 小 Z 觉得,尽管多次到达同一个地方,但如果来时的路不一样,也是别有一番 风味. 小 Z 事先准备了一份地图,地图上给出了 N 个小 Z 心仪的城市,依次编号 1…N,以及 M 条连接两个城市的路,编号 1…M.小 Z 打算把 M 条路都走一遍且 仅一遍,但他发现这样的路线可能是不存在的.于是他打算,当他走到一个城 市后发现从这个城市出…
[题目描述] 在暑假来临之际,小 Z 的地理老师布置了一个暑假作业,让同学们暑假期间 了解一下 C 国的铁路发展史.小 Z 在多番查证资料后发现,C 国在铁路发展初期, 铁路网络有着一个严密规整的结构:C 国的 N 个城市按层级分为首都.省会.省 辖市……由于在铁路发展初期,建造铁路花费巨大,为了避免不必要的浪费,铁 路网络的建设保证了任意两个城市相互连通,且仅有一条连通路径. 随后,小 Z 还查阅到历年来铁道部向全国上下发布的大小消息.由于多年来 C 国货币系统保持健康的 3%通胀率带来了稳定…