摘要: 题目链接 高斯消元求解异或方程组 若$i$号灯影响$j$号灯,\(g_{j,i} = 1\) 消去其它行,用异或消去。 注意循环里的if语句不要缺少。 计算答案时记得跳过自由元。 #include<bits/stdc++.h> using namespace std; int n,m; int g[ 阅读全文
posted @ 2020-07-21 20:55 zhuzihan 阅读(154) 评论(0) 推荐(0) 编辑
摘要: POJ - 2947 高斯消元求解同余方程组。 首先我们列出方程,注意到这是在$Mod 7$意义下成立的方程,因此我们需要把所有操作变为模意义下的操作。 比如我们在消去同一列上其他值时,要用求公倍数消去的方法,最好不要求逆元。 求解时会用到逆元。 注意判断多组解和无解的情况,一个是行数多于列数,有自 阅读全文
posted @ 2020-07-21 19:37 zhuzihan 阅读(114) 评论(0) 推荐(0) 编辑
摘要: POJ - 1222 与这道题一样,都是高斯消元求异或方程组。 一共$30$盏灯,每盏灯影响上下左右的灯,基本上就是矩阵改一下。 最后求解方程,自由元随你定。 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> 阅读全文
posted @ 2020-07-21 19:24 zhuzihan 阅读(133) 评论(0) 推荐(0) 编辑
摘要: POJ - 1830 高斯消元求异或方程组。 每个灯连续操作两次等于没有操作,所以每盏灯只有0/1的操作状态,记为$x_i$ 第$i$盏灯对第$j$盏灯有影响,则$a_{j,i} = 1$,反之$a_{j,i} = 0$ 第$i$盏灯初末状态不一样,$a_{i,n+1} = 1$反之为$0$ 然后我 阅读全文
posted @ 2020-07-21 19:18 zhuzihan 阅读(157) 评论(0) 推荐(0) 编辑
摘要: HDU - 6331 分块DP,真是奇妙的想法。 $dp[i][j][k]$表示$i$到$j$走恰好$k$步的最短路。 我们可以用$Floyd$来处理。 然后我们再遍历整个数组,求$min$,让$dp[i][j][k]$表示$i$到$j$走至少$k$步的最短路。 但是我们不能开$dp[55][55] 阅读全文
posted @ 2020-07-21 18:56 zhuzihan 阅读(93) 评论(0) 推荐(0) 编辑
摘要: HDU - 2157 构造矩阵,用于转移走一步的情况。 若$i$能走到$j$,则$g[j][i]=1$,否则为$0$ 然后一开始只有$A$点累计有一种走法。 所以最后计算矩阵的$k$次方,输出$g[B][A]$即可。 #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2020-07-21 18:33 zhuzihan 阅读(90) 评论(0) 推荐(0) 编辑
摘要: HDU - 2256 神仙题,完全没想到。 朴素想法,我们开4*4的矩阵,分别记录$\sqrt{2}\(,\)\sqrt{3}\(,\)\sqrt{6}$,$1$的系数,然后快速幂。 但是我们没法对系数取模,因此不能确定整数部分。 再分析一下,题目让我们求$(\sqrt{2} + \sqrt{3}) 阅读全文
posted @ 2020-07-21 18:23 zhuzihan 阅读(105) 评论(0) 推荐(0) 编辑
摘要: LibreOJ - 2670 直接模拟矩阵乘法即可 但是,注意数据范围,我们long long乘法会炸精度,因此采用快速乘。 快速乘,类似快速幂的思想,大概就是把乘号改加号 int mul(int x,int y){ int z = 0; while(y){ if(y & 1) z = z + x; 阅读全文
posted @ 2020-07-21 17:58 zhuzihan 阅读(173) 评论(0) 推荐(0) 编辑
摘要: HDU - 3306 直接根据题意构造矩阵 \[ \left[ \begin{array}{ccc} A_{n-2}\\\\ A_{n-1}\\\\ A_{n-2}*A_{n-1}\\\\ A_{n-2}^2\\\\ A_{n-1}^2\\\\ S_{n-1}\\\\ \end{array} \ri 阅读全文
posted @ 2020-07-21 16:12 zhuzihan 阅读(75) 评论(0) 推荐(0) 编辑
摘要: HDU - 2604 我们可以通过在一串序列的末尾不断添加'\(f\)'或是'\(m\)'来获得所有的串,其中我们要及时去除不合法的串'\(fff\)','\(fwf\)' 首先把所有的串分类,按照最末尾两个字符分四类,分别是,'\(ff\)','\(fm\)','\(mf\)','\(mm\)' 阅读全文
posted @ 2020-07-21 16:10 zhuzihan 阅读(113) 评论(0) 推荐(0) 编辑
摘要: HDU - 1757 矩阵构造入门题 \[ \left[ \begin{array}{ccc} f_0\\\\ f_1\\\\ f_2\\\\ f_3\\\\ f_4\\\\ f_5\\\\ f_6\\\\ f_7\\\\ f_8\\\\ f_9\\\\ \end{array} \right] * 阅读全文
posted @ 2020-07-21 15:55 zhuzihan 阅读(91) 评论(0) 推荐(0) 编辑
摘要: HDU - 1575 很裸的矩阵乘法 对角线一共只有两条,试一下就好了 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; const int mod = 9973; i 阅读全文
posted @ 2020-07-21 15:38 zhuzihan 阅读(121) 评论(0) 推荐(0) 编辑