摘要:
HDU - 6331 分块DP,真是奇妙的想法。 $dp[i][j][k]$表示$i$到$j$走恰好$k$步的最短路。 我们可以用$Floyd$来处理。 然后我们再遍历整个数组,求$min$,让$dp[i][j][k]$表示$i$到$j$走至少$k$步的最短路。 但是我们不能开$dp[55][55] 阅读全文
摘要:
HDU - 2157 构造矩阵,用于转移走一步的情况。 若$i$能走到$j$,则$g[j][i]=1$,否则为$0$ 然后一开始只有$A$点累计有一种走法。 所以最后计算矩阵的$k$次方,输出$g[B][A]$即可。 #include<bits/stdc++.h> using namespace s 阅读全文
摘要:
HDU - 2256 神仙题,完全没想到。 朴素想法,我们开4*4的矩阵,分别记录$\sqrt{2}\(,\)\sqrt{3}\(,\)\sqrt{6}$,$1$的系数,然后快速幂。 但是我们没法对系数取模,因此不能确定整数部分。 再分析一下,题目让我们求$(\sqrt{2} + \sqrt{3}) 阅读全文
摘要:
LibreOJ - 2670 直接模拟矩阵乘法即可 但是,注意数据范围,我们long long乘法会炸精度,因此采用快速乘。 快速乘,类似快速幂的思想,大概就是把乘号改加号 int mul(int x,int y){ int z = 0; while(y){ if(y & 1) z = z + x; 阅读全文
摘要:
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 阅读全文
摘要:
HDU - 2604 我们可以通过在一串序列的末尾不断添加'\(f\)'或是'\(m\)'来获得所有的串,其中我们要及时去除不合法的串'\(fff\)','\(fwf\)' 首先把所有的串分类,按照最末尾两个字符分四类,分别是,'\(ff\)','\(fm\)','\(mf\)','\(mm\)' 阅读全文
摘要:
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] * 阅读全文
摘要:
HDU - 1575 很裸的矩阵乘法 对角线一共只有两条,试一下就好了 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; const int mod = 9973; i 阅读全文