2025/5/3集训(上午)
课前随笔:
algorithm中有2个函数:
upper_bound和lower_bound.
用法:
upper_bound/lower_bound(a+1, a+n+1, x);//二分x
lower_bound:找>=x的最小值
upper_bound:找>x的最小值
进阶用法:
lower_bound(a+1, a+n+1, x)-1;//找<=x的(想找<x的就改成upper_bound)
dp,启动!
3大步骤:状态,转移方程,初始化
How to 定状态?
把题目中所有变化的量全定义为状态.
一些奇妙的小东西:
经过测验,矩阵乘法枚举顺序为ikj时最快果然玄学占领世界(bushi
上代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include <iostream>
using namespace std;
#define long long ll
struct matrix{
int n, m;
int a[512][512];
matrix(){
n = m = 0;
memset(a, 0, sizeof(a));
}
};
matrix operator*(const matrix &x, const matrix &y){
matrix z;
z.n = x.n, z.m = y.m;
for (int i = 1; i <= z.n; i++)
for (int k = 1; k <= x.m; k++)
for (int j = 1; j <= z.m; j++)
z.a[i][j] = z.a[i][j]+x.a[i][k]*y.a[k][j];
return z;
}
int main(){
return 0;
}
(小胖秀操作\(\times 4\))
2.斐波那契问题—— 矩阵快速幂
不难发现:
{f[i], f[i+1]} = {0, 1} * {f[i-1], f[i]};
______________{1, 1} (请忽略那些下划线,把{1,1}当成{0,1}的下一行的矩阵)
(剩下的没听懂)
浙公网安备 33010602011771号