首页 > 其他分享 >2022/8/25 总结

2022/8/25 总结

时间:2022-08-25 20:13:34浏览次数:88  
标签:总结 25 cnt int sum memr 矩阵 2022 ans

A.幸福

  • 考场上没想起矩阵,写了个 \(\mathtt{O(n)}\) 的暴力,得 \(\mathtt{70pts}\) ;

Solution

  • 矩阵乘法。对 \(F_n\) 进行化简,就可以化得一个式子: \(F_n=F_{n-1}+F_{n-2}+f_n\),其中 \(f_n\) 表示斐波那契数列的第 \(n\) 项。

  • 然而这样还是不能求和。
    解决方案为将 \(sum\) 也放进矩阵里。
    于是设计答案矩阵构成为 \(\begin{bmatrix}sum_n&F_n&F_{n-1}&f_{n+1}&f_n\end{bmatrix}\),则每次转移时将 \(F_{n+1}\) 算出再累加到 \(sum_n\) 中,即可得到 \(sum_{n+1}\)。

  • 与这个矩阵对应的转移矩阵为:
    \(\begin{bmatrix}1&0&0&0&0\\1&1&1&0&0\\1&1&0&0&0\\1&1&0&1&1\\0&0&0&1&0\end{bmatrix}\)

AC 矩阵乘法
#include<bits/stdc++.h>
using namespace std;

#define ll long long

const int mod=998244353;

struct memr{
	ll x[10][10];
	int a,b;
	memr operator*(const memr &_)const{
		memr cnt;
		memset(cnt.x,0,sizeof(cnt.x));
		cnt.a=a,cnt.b=_.b;
		for(int i=1;i<=a;++i)
			for(int j=1;j<=_.b;++j)
				for(int k=1;k<=b;++k)
					(cnt.x[i][j]+=1ll*x[i][k]*_.x[k][j]%mod)%=mod;
		return cnt;
	}
};

memr ksm(ll y){
	memr dx;
	dx.a=dx.b=5;
	memset(dx.x,0,sizeof(dx.x));
	dx.x[1][1]=dx.x[2][1]=dx.x[3][1]=dx.x[4][1]=1;
	dx.x[2][2]=dx.x[3][2]=dx.x[4][2]=1;
	dx.x[2][3]=dx.x[4][4]=dx.x[4][5]=dx.x[5][4]=1;
	memr cnt;
	cnt.a=cnt.b=5;
	for(int i=1;i<6;++i)
		for(int j=1;j<6;++j)
			cnt.x[i][j]=(i==j);
	for(;y;y>>=1,dx=dx*dx)
		if(y&1)
			cnt=cnt*dx;
	return cnt;
}

ll n;

int main(){
	scanf("%lld",&n);
	if(n==0){
		printf("%d",1);
		return 0;
	}
	memr ans;
	ans.a=1,ans.b=5;
	memset(ans.x,0,sizeof(ans.x));
	ans.x[1][1]=3;
	ans.x[1][2]=2,ans.x[1][3]=ans.x[1][5]=1;
	ans.x[1][4]=2;
	ans=ans*ksm(n-1);
	printf("%lld",ans.x[1][1]);
	return 0;
}

标签:总结,25,cnt,int,sum,memr,矩阵,2022,ans
From: https://www.cnblogs.com/Star-LIcsAy/p/16625561.html

相关文章

  • 2022-08-25 第五组 赖哲栋 学习笔记
    元素的设置<!--所有的HTMl元素,我们可以根据具体需求,自定义添加属性--><divhaha="abc"id="xyz"></div>获取属性的值元素.属性名的方式只适用于元素原生的属性......
  • 2022-08-25 第二组刘禹彤 学习笔记
    打卡40天###学习内容Javascript自定义属性获取属性所有的html元素,我们可以根据具体需求,自定义添加属性元素.属性名的方式只适用于元素原生的属性自定义属性di......
  • NOI 2022 游记
    Day1挂了。挂了30分,不知道哪里挂的,看完分自闭了没调。Day2又挂了。挂了48分。放平心态调了调,调完更自闭了。T1自然溢出被卡,加个模数就过了。-32T2暴力没判......
  • 2022-08-22 第二小组 张晟源(JS)
    JSBOM:浏览器对象模型BOM核心对象window回调函数一个函数的参数是另一个函数<script>letcallback=function(a){}//箭头函数......
  • 2022-8-25 剑指offer-字典树-每日一题-二分/排序
    剑指OfferII063.替换单词难度中等25收藏分享切换为英文接收动态反馈在英语中,有一个叫做 词根(root) 的概念,它可以跟着其他一些词组成另一个较长的单词——我......
  • 如何在FirPE中运行AutoHotkey脚本和Maye-Lite-2022年8月25日
     如何在FirPE中运行AutoHotkey脚本和Maye-Lite-2022年8月25日      说明:由于“AutoHotkey中文社区”网站的写文章网页没有实时自动保存当前编辑内容的功能......
  • 202208 网课实录
    前言文化课选手来学文化课了!不知道为啥,上了一半改成了网课,只留下新高一的军训。由于是网课,形式算是特殊的,有记录的必要。之后寒暑假据说有概率继续网课。用的课后网(无......
  • 2022 居家办公高性价比的电动升降桌选购指南 All In One
    2022居家办公高性价比的电动升降桌选购指南AllInOne2022居家办公如何挑选和购买一款高性价比的电动升降桌AllInOneElectricStandingDesk/电动站立式办公桌......
  • 疑问2022-8-25
    //预处理查询示例funcprepareQueryDemo(){ sqlStr:="selectid,name,agefromuserwhereid>?" stmt,err:=db.Prepare(sqlStr) iferr!=nil{ fmt.Pr......
  • ZLOJ 练习69 总结
    writtenon2022-08-17打得还可以虽然又是倒一hh前三题中第一题贪心稍微注意一下,想了一段时间还算可以。可以看一下第四题。这题最大的启示就是:要求的东西只关注最后的......