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}的下一行的矩阵)
(剩下的没听懂)

posted on 2025-05-03 11:26  穆昕雨  阅读(25)  评论(0)    收藏  举报

导航