天使的分裂【NOIP2016提高A组模拟9.24】
题目
Input
一个整数n
Output
一行,一个整数,表示第0天到第n天的评估函数的值的和。
Sample Input
Input 1
5
Input 2
666666
Input 3
2147483648
Sample Output
Output 1
76
Output 2
324016098
Output 3
932937567
数据范围:
剖解题目
。。。。。
思路
一般看上去这么复杂的,肯定是递推之类的,然后对于最大的数据肯定是有快速的虽然之类的。
解法
40%:暴力
60%:预处理斐波那契数列,使用NTT计算卷积。时间复杂度Ο(nlog2 n)。
70%:可以推出F[i]=F[i-1]+F[i-2]+f[i]。时间O(n)。
100%:矩阵乘法优化:
设一个5*5的矩阵,根据矩阵乘法性质直接快速幂,然后乘一个初始的1 *5的矩阵即可。
时间O(log2 n).
代码
#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define ll long longusing namespace std;const ll mo=998244353;
ll n,a[5]={1,1,2,1,3},ans[5];
ll sq[5][5]={0,1,1,0,1,1,1,1,0,1,0,0,1,1,1,0,0,1,0,1,0,0,0,0,1};
ll t[5][5]={1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1};void cc1()
{ll now[5][5];memset(now,0,sizeof(now));fo(i,0,4)fo(j,0,4)fo(k,0,4) now[i][j]=((t[i][k]*sq[k][j])%mo+now[i][j])%mo;memcpy(t,now,sizeof(now));
}
void cc2()
{ll now[5][5]; memset(now,0,sizeof(now));fo(i,0,4)fo(j,0,4)fo(k,0,4) now[i][j]=((sq[i][k]*sq[k][j])%mo+now[i][j])%mo;memcpy(sq,now,sizeof(now));
}
void qsm(ll n)
{while (n){if (n&1) cc1();cc2();n>>=1;}}
int main()
{scanf("%lld",&n);if (!n) {printf("1"); return 0; }qsm(n-1);fo(j,0,4)fo(k,0,4) ans[j]=((a[k]*t[k][j])%mo+ans[j])%mo;printf("%lld",ans[4]);
}
天使的分裂【NOIP2016提高A组模拟9.24】相关推荐
- JZOJ 4798 【NOIP2016提高A组模拟9.24】天使的分裂
天使的分裂 题目大意 同时满足 求 ∑ni=1Fi \sum_{i=1}^{n}F_i 数据范围 题解 题目很简单,但是看上去很难. 先将F的递推式推出来. 所以递推式为 Fn F_n= Fn−1 F ...
- 【NOIP2016提高A组模拟9.24】天使的分裂
题目 Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 Input 2 666666 Input 3 2147 ...
- JZOJ4798. 【NOIP2016提高A组模拟9.24】天使的分裂
Description Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 Input 2 666666 Inp ...
- 【NOIP2016提高A组模拟9.24】天使的分裂 (矩阵乘法)
Description Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 input 2 666666 Inp ...
- JZOJ 100024. 【NOIP2016提高A组模拟7.6】数球
Description 小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件. 每次取出的球的个数两两不同. 每次取出的球 ...
- JZOJ4708. 【NOIP2016提高A组模拟8.20】奇洛金卡达 倒着做的思想+并查集维护
题目大意 给定一个长度小于等于kk的字符串和qq,表示现在有qq个操作,每个操作给定两个参数li,ril_i,r_i表示把现在的字符串第lil_i到rir_i把其中编号为奇数的按顺序写下来,再在后面把 ...
- 【NOIP2016提高A组模拟9.9】闭门造车
题目 自从htn体验了一把飙车的快感,他就下定决心要闭门造车!但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店. 一走进商店,玲琅满目的各式零件看得htn眼花缭乱.但是他很快便反应过来 ...
- [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列
题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...
- JZOJ 4726. 【NOIP2016提高A组模拟8.22】种花
Description 经过三十多个小时的长途跋涉,小Z和小D终于到了NOI现场--南山南中学.一进校园,小D就被花所吸引了(不要问我为什么),遍和一旁的种花园丁交(J)流(L)了起来. 他发现花的摆 ...
最新文章
- go语言离线查看说明文档
- cocos2d-x初探学习笔记(15)--CCOrbitCamera
- 安装net framework2.0,装不上怎么办?
- StretchDIBits 的使用
- ABAP学习笔记-基础语法-06-流程控制(01)-条件语句
- iOS Weak底层详解
- iOS 13越狱:越狱后如何安装AppSync和afc2越狱补丁
- qlikview连接mysql_QlikView安装
- Excel计算时间差(精确到分钟、秒)
- Visual Studio 2017卸载不干净
- 小公司一个人如何进行测试
- 压缩打包命令---tar
- 5G有源、无源室分对比
- 南宁发展重点向南 五象湖标志性建筑“五象塔”落成
- 好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务
- 养生常识 淘米水14个妙用一般人不知道
- 广东省揭阳市谷歌卫星地图下载
- 卷影复制服务错误: 调用程序 CoCreateInstance 时的意外错误。hr = 0x8007045b, 系统正在关机。
- 麦当劳电子发票打印之后全都是乱码
- JasperReportsPDF报表生成工具介绍
热门文章
- 计算机术语CAE是指,计算机应用基础 1
- 计算机网络技术日趋完善并走向,计算机应用基础 10
- 物料编码主文件------(整理)
- Mysql - 知识图谱总览
- Linux下的软件Mysql完全卸载(包括其依赖和库等残留文件)
- LTE-M通信系统传输建模与可用性分析
- liteos简介(一)
- python自动化测试学习路线(从入门到精通)
- 【虚拟试衣论文】Generating High-Resolution Fashion Model Images Wearing Custom Outfits
- ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C