高斯消元
Icefox_zhx
这个作者很懒,什么都没留下…
展开
-
bzoj1013 [JSOI2008]球形空间产生器(高斯消元)
第一道高斯消元。嗯。特判啥的还都没写。待改进。 题意比较简单,n+1个点,可以列出n个方程,所以就是要解一个线性方程组。我们用高斯消元来解。首先线性方程组可以表示成A.X=C的形式,其中A为系数矩阵,X为未知数矩阵(一个列向量),C为常数矩阵。现在我们已知A和C,求解X。大概就是加减消元的思想。时间复杂度O(n3)O(n^3). 讲解:https://www.cnblogs.com/candy9原创 2017-12-22 14:18:12 · 266 阅读 · 0 评论 -
bzoj2707 [SDOI2012]走迷宫(期望dp+tarjan缩点+Gauss)
令f[i]表示从i到T的期望步数。 我们有转移f[x]=∑yf[y]du[x]+1f[x]=∑yf[y]du[x]+1f[x]=\sum_y\frac{f[y]}{du[x]}+1 因为存在环所以scc内只能Gauss来求。 于是我们先tarjan缩一波点,然后倒拓扑序dp即可。 f[T]=0. 如果s,t不连通那么输出inf,或者缩完点之后没有出度的点不止bel[T],那么输出inf。...原创 2018-05-26 22:14:51 · 399 阅读 · 0 评论 -
bzoj4031 [HEOI2015]小Z的房间(矩阵树定理+Gauss)
还是矩阵树定理裸题。 不过这次的高斯消元有点意思,对1e9取模。 没逆元这可咋整qaq 辗转相除!orz 复杂度O(n3log1e9)O(n3log1e9)O(n^3log1e9)#include <bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define ...原创 2018-05-26 13:41:06 · 241 阅读 · 0 评论 -
spoj104 Highways(矩阵树定理)
Matrix-tree定理裸题。 对于一张无向图G,我们有度数矩阵D[G]D[G]D[G] dij={du[i],0,i=ji≠jdij={du[i],i=j0,i≠jd_{ij}= \begin{cases} du[i], &\text{$i=j$}\\ 0, &\text{$i \neq j$} \end{cases} 我们还有邻接矩阵A[G]A[G]A[G] aij={1,0,i...原创 2018-05-26 13:00:20 · 226 阅读 · 0 评论 -
bzoj3640 JC的小苹果(期望dp+Gauss+矩阵求逆)
我们有比较显然的期望dp,f[x][i]表示到x点血量为i的期望次数。 我们有转移f[x][i]=∑yf[y][i+w[x]]du[y]f[x][i]=∑yf[y][i+w[x]]du[y]f[x][i]=\sum_y\frac{f[y][i+w[x]]}{du[y]} 直接高斯消元复杂度O((nhp)3)O((nhp)3)O((nhp)^3)gg 由于血量不增,因此我们可以按剩余血量分层d...原创 2018-05-25 23:10:21 · 279 阅读 · 0 评论 -
bzoj1778 [Usaco2010 Hol]Dotp 驱逐猪猡(概率dp+高斯消元)
设dp[i]为到点i的概率。则我们有转移 dp[i]=∑jdp[j]∗(1−p)∗mp[j][i]/du[j]dp[i]=\sum\limits_{j}dp[j]*(1-p)*mp[j][i]/du[j] 对于点1还要额外加1. 但是因为转移是带环的,我们没法转移。 我们采用高斯消元,解这n个方程即可。 复杂度O(n3)O(n^3)注意有孤立点!精度其实要求1e-9!#include <b原创 2018-05-08 20:04:38 · 247 阅读 · 0 评论 -
bzoj4128 Matrix(BSGS+高斯消元,矩阵求逆+Hash表)
BSGS,只不过变成了矩阵。 学习了一下矩阵求逆,用高斯消元来做即可。O(n3)O(n^3) 还是把系数矩阵放左面,右边的常数向量变成了一个单位矩阵。高斯消元即可,最后左边变成了一个单位矩阵,右边就是我们的逆矩阵。原创 2018-04-28 20:20:01 · 225 阅读 · 0 评论 -
bzoj3168 [Heoi2013]钙铁锌硒维生素(矩阵求逆+匈牙利)
如果把ai替换成bj,这n个向量还是线性无关即可以。 我们求一个C∗A=B,=>C=B∗A−1C∗A=B,=>C=B∗A−1C*A=B,=>C=B*A^{-1} 矩阵求逆可以高斯消元来做,注意他原本的A矩阵也不一定就线性无关qaq 如果Cij!=0Cij!=0C_{ij}!=0,说明bj可以替换ai。因此CTCTC^T就是这张二分图的邻接矩阵。然后我们就要求一个字典序最小的完...原创 2018-05-18 22:37:51 · 256 阅读 · 0 评论 -
bzoj4004 [JLOI2015]装备购买(贪心+高斯消元)
求权值和最小的极大线性无关集。 我们贪心地按权值从小往大加,如果线性相关了就删掉。 由于bzoj貌似卡精度,于是可以写模意义下的… O(nm2)O(nm2)O(nm^2)#include <bits/stdc++.h>using namespace std;#define ll long long#define N 510#define mod 1000000007...原创 2018-05-18 16:10:19 · 218 阅读 · 0 评论 -
bzoj3143 [Hnoi2013]游走(期望dp+高斯消元+贪心)
我们计算出每条边被经过的期望次数,次数越多的标号越小即可。 考虑一条边被经过的次数怎么求,设这条边为(x,y),f[x]表示经过点x的期望次数,du[x]表示x的度数。 那么经过这条边的期望次数就是f[x]/du[x]+f[y]/du[y]f[x]/du[x]+f[y]/du[y]f[x]/du[x]+f[y]/du[y] 因此我们现在只需求出f[x]。期望dp即可。 对于1<x&l...原创 2018-05-18 10:26:24 · 182 阅读 · 0 评论 -
bzoj2337 [HNOI2011]XOR和路径(期望dp+按位+高斯消元)
我们把异或拆开,一位位的考虑,这样边权就只有0/1了。 考虑期望dp,f[i]表示i节点到n的路径异或和为1的概率。 那么我们有转移:如果i指向y,且边权为1,f[i]+=(1−f[y])/du[i]f[i]+=(1−f[y])/du[i]f[i]+=(1-f[y])/du[i] 如果i指向y,且边权为0,f[i]+=f[y]/du[i]f[i]+=f[y]/du[i]f[i]+=f[y]/...原创 2018-05-17 23:05:45 · 186 阅读 · 0 评论 -
bzoj1923 [Sdoi2010]外星千足虫(高斯消元+bitset)
就是解异或方程组,保证有解,要判多解。 顺便要记录用到的方程的最大标号。原创 2018-04-24 22:14:48 · 163 阅读 · 0 评论 -
bzoj3270 博物馆(概率dp+高斯消元)
设dp[i][j]表示第一个人在i,第二个人在j的概率。 我们有转移: dp[i][j]=dp[i][j]∗p[i]∗p[j]+∑kmp[k][i]∗p[j]∗(1−p[k])/du[k]+∑kmp[k][j]∗p[i]∗(1−p[k])/du[k]+∑k1∑k2mp[k1][i]∗mp[k2][j]∗(1−p[k1])∗(1−p[k2])/du[k1]/du[k2]dp[i][j]=dp[i]原创 2018-05-08 20:11:50 · 272 阅读 · 0 评论 -
bzoj1770 [Usaco2009 Nov]lights 燈(高斯消元解异或方程组+枚举自由元)
首先我们发现每个开关要不嗯1次,要不摁0次,没必要摁多次。于是对于每个点i,我们就得到了这样一个方程组: a[i][1]*x[1]^a[i][2]*x[2]^…^a[i][n]*x[n]=1. 其中a[i][j]表示i,j是否有边,如果有就是1,否则是0.x[i]表示是否嗯开关i。然后我们用高斯消元解这个方程组,可以用bitset优化。然后爆搜枚举自由元,取最优解。原创 2018-01-20 22:01:24 · 961 阅读 · 0 评论 -
hdu3949 XOR(求所有的异或和的第k小,高斯消元求线性基)
首先线性基很妙啊。可以来这里学习下:传送门 然后板子基本就是高斯消元?蒟蒻还不会高斯消元。。。待填坑。反正就是用log w级别的数,代替了原来的n个数。在什么意义上这两个东西相等呢?就是这log w个数(叫做线性基),通过线性组合可以得到所有的n个数。一般用于求解异或和最值的问题。板子见 传送门。此题是求第k小的异或和。根据线性基的性质,我们可以得到第k小的就是:把m个线性基从小到大排序,分别叫v原创 2017-11-27 19:11:02 · 524 阅读 · 0 评论 -
sgu275 线性基模板题
高斯消元求线性基,O(nlogw)O(nlog w),两种写法。第二种代码短,但是不能保证性质。原创 2017-11-27 19:24:21 · 792 阅读 · 0 评论 -
bzoj4820 [Sdoi2017]硬币游戏(期望与概率+Gauss+kmp)
#include &lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define inf 0x3f3f3f3f#define N 310inline int read(){ int x=0,f=1;char ch=getchar(); while(ch&lt;'0'||ch&gt;'9'){if(c...原创 2018-05-26 23:23:17 · 251 阅读 · 0 评论