矩阵快速幂
nlj1999
这个作者很懒,什么都没留下…
展开
-
bzoj 1494: [NOI2007]生成树计数
55555555555555555555555555555555被虐哭了 调了两个小时才调出来,简直不要太坑。 论文还是比较良心的,就是初始矩阵好难构造的说。 最后迫不得已写了个很挫的方法构造。 #include #include #include #include using namespace std; typedef long long ll; const int p=65521;原创 2016-03-20 20:31:11 · 600 阅读 · 0 评论 -
SPOJ 1676 GEN - Text Generatord
一眼题。。。。。 论文里讲了一大堆其实就是ac自动机上乱搞嘛。 然后就是论如何把一道水题出成神题,技巧就是……卡常数。。。。。。。 首先会发现某些情况下trie树的很多节点都到不了(比如说根节点的A子节点是叶子,于是所有串只要到A全都cut了) 所以存在大量的无用状态,全部剪掉就能过了。 话说现在才发现原来ac自动机的fail指针和kmp的fail一样可以通过一个循环遍历所有的(既是前缀原创 2016-03-21 08:37:53 · 504 阅读 · 0 评论 -
BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼
邻接矩阵求路线数 特殊性在于周期,不过求下LCM还是可以搞的。 可以发现图是周期变化的,以12为一周期,于是建13个邻接矩阵,第13个为前12个的乘积,于是有G(K)=(G(13))^(k/12)*(G(1)*G(2)*……*G(k%12)),O(n^3*logk) 话说没注意邻接矩阵的含义WA了一次是闹哪样。。。。。 #include #include #include using na原创 2016-03-21 09:43:50 · 623 阅读 · 0 评论 -
poj 3613 Cow Relays
这是什么鬼?????? floyd+矩阵乘法????? 不是很懂你们奶牛,真会玩。 问题是求无向图上两点间经过k条边的最短路。 定义floyd矩阵乘法(我瞎扯的)为A[i][j]=min(B[i][k]+C[k][j]) 然后发现这个满足结合律哎。 如果B为经过x条边的答案,C为经过y条边的答案,那么A为经过x+y条边的答案 好神奇 于是就可以直接套矩阵快速幂了。 真是6的不行原创 2016-03-21 10:17:03 · 209 阅读 · 0 评论 -
BZOJ 2004: [Hnoi2010]Bus 公交线路
矩阵乘法优化状压DP 首先通过枚举做法分析可以把当前状态表示为P个格子内有k辆车的分布。 状态数最大是C(5,10)=252,可以考虑用矩阵乘法转移(然后就T了,而且还会WA) 但其实并没有这么多 考虑第一位为0的状态,是不合法的 不然我们就可以跨过一些站了 所以状态数最多是C(4,9)=126 然后就过了 好水 #include #include #include #inclu原创 2016-04-01 19:21:35 · 472 阅读 · 0 评论 -
BZOJ 2326: [HNOI2011]数学作业
还以为有什么奥妙重重的数学公式 结果没想到是矩乘…… #include #include #include using namespace std; typedef long long ll; int m; struct matrix{ ll a[3][3]; void print(){ for(int i=0;i<3;i++){ for(int j=0;j<3;j++)原创 2016-04-02 11:38:00 · 239 阅读 · 0 评论 -
BZOJ 4597: [Shoi2016]随机序列
很可做的一道题 考虑一下一段序列的答案为b+x,x为最右连续一段是乘积,然后和为x,b则为对应的左边的和 然后考虑在右边加一个数k,分类讨论一下发现x'=kx,b'=2x+3b 于是就可以DP了 然后DP可以矩阵转移 于是就可以用线段树维护矩阵 就水过去了 (好像很简单哎,AC率好高的说) #include #include #include #include #include #原创 2016-05-27 15:46:31 · 570 阅读 · 0 评论