
倍增
lengxuenong
这个作者很懒,什么都没留下…
展开
-
P6569 [NOI Online #3 提高组]魔法值--倍增
n<=100,很明显矩阵存储图,设原图为A(n*n),每次fi都是前i-1转移而来,f[i]=W(1*n)*A^i也就是长度为i的边所影响的节点。图上可达矩阵普通乘法是 意义:(aij)^k代表ij路径长度为k的条数。本题为异或W(1*n)^(A运算A.....),这个运算是什么运算呢?和普通矩阵乘法有什么区别?ai*j代表有aij个wi相异或。根据异或运算的规则,偶数个形同的数异或相当于没有参与运算。因此可以普通矩阵运算再算奇偶性,也可以如果进行普通矩阵运算,注意数据范围,数据值将会很大原创 2020-05-26 15:21:53 · 256 阅读 · 0 评论 -
P6148 [USACO20FEB]Swapity Swapity Swap S--倍增
题目大意:不断翻转区间m次,这个过程再重复K(10^9)次。n*m<10^7.第一次模拟时间复杂度是没有问题的,关键是后面的k,应该需要log的时间复杂度。首先想到的是将转换化为矩阵的方式,然后用矩阵快速幂,可是N*N的矩阵太大了。不用矩阵行不行?用数组的转换方式直接换。类似快速幂的倍增,这样空间时间都可以了。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],tmp[N],r原创 2020-05-26 11:25:19 · 475 阅读 · 0 评论