题目


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】相关推荐

  1. JZOJ 4798 【NOIP2016提高A组模拟9.24】天使的分裂

    天使的分裂 题目大意 同时满足 求 ∑ni=1Fi \sum_{i=1}^{n}F_i 数据范围 题解 题目很简单,但是看上去很难. 先将F的递推式推出来. 所以递推式为 Fn F_n= Fn−1 F ...

  2. 【NOIP2016提高A组模拟9.24】天使的分裂

    题目 Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 Input 2 666666 Input 3 2147 ...

  3. JZOJ4798. 【NOIP2016提高A组模拟9.24】天使的分裂

    Description Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 Input 2 666666 Inp ...

  4. 【NOIP2016提高A组模拟9.24】天使的分裂 (矩阵乘法)

    Description Input 一个整数n Output 一行,一个整数,表示第0天到第n天的评估函数的值的和. Sample Input Input 1 5 input 2 666666 Inp ...

  5. JZOJ 100024. 【NOIP2016提高A组模拟7.6】数球

    Description 小A有n个球,编号分别为1到n,小A每次都会从n个球中取出若干个球,至少取一个,至多取n个,每次取完再放回去,需要满足以下两个条件. 每次取出的球的个数两两不同. 每次取出的球 ...

  6. JZOJ4708. 【NOIP2016提高A组模拟8.20】奇洛金卡达 倒着做的思想+并查集维护

    题目大意 给定一个长度小于等于kk的字符串和qq,表示现在有qq个操作,每个操作给定两个参数li,ril_i,r_i表示把现在的字符串第lil_i到rir_i把其中编号为奇数的按顺序写下来,再在后面把 ...

  7. 【NOIP2016提高A组模拟9.9】闭门造车

    题目 自从htn体验了一把飙车的快感,他就下定决心要闭门造车!但是他两手空空怎么造得出车来呢?无奈的他只好来到了汽车零部件商店. 一走进商店,玲琅满目的各式零件看得htn眼花缭乱.但是他很快便反应过来 ...

  8. [JZOJ4788] 【NOIP2016提高A组模拟9.17】序列

    题目 描述 题目大意 一个序列,每次可以使一段区间内的所有数加一(模四). 问最少的操作次数. 思考历程 一看这题目,诶,这不就是那道叫密码锁的题目吗? 然后随便打一打,样例过了,就再也没有思考这一题 ...

  9. JZOJ 4726. 【NOIP2016提高A组模拟8.22】种花

    Description 经过三十多个小时的长途跋涉,小Z和小D终于到了NOI现场--南山南中学.一进校园,小D就被花所吸引了(不要问我为什么),遍和一旁的种花园丁交(J)流(L)了起来. 他发现花的摆 ...

最新文章

  1. go语言离线查看说明文档
  2. cocos2d-x初探学习笔记(15)--CCOrbitCamera
  3. 安装net framework2.0,装不上怎么办?
  4. StretchDIBits 的使用
  5. ABAP学习笔记-基础语法-06-流程控制(01)-条件语句
  6. iOS Weak底层详解
  7. iOS 13越狱:越狱后如何安装AppSync和afc2越狱补丁
  8. qlikview连接mysql_QlikView安装
  9. Excel计算时间差(精确到分钟、秒)
  10. Visual Studio 2017卸载不干净
  11. 小公司一个人如何进行测试
  12. 压缩打包命令---tar
  13. 5G有源、无源室分对比
  14. 南宁发展重点向南 五象湖标志性建筑“五象塔”落成
  15. 好家伙!清华电子系大一暑假Python课程大作业上知乎热榜!竟是个CV任务
  16. 养生常识 淘米水14个妙用一般人不知道
  17. 广东省揭阳市谷歌卫星地图下载
  18. 卷影复制服务错误: 调用程序 CoCreateInstance 时的意外错误。hr = 0x8007045b, 系统正在关机。
  19. 麦当劳电子发票打印之后全都是乱码
  20. JasperReportsPDF报表生成工具介绍

热门文章

  1. 计算机术语CAE是指,计算机应用基础 1
  2. 计算机网络技术日趋完善并走向,计算机应用基础 10
  3. 物料编码主文件------(整理)
  4. Mysql - 知识图谱总览
  5. Linux下的软件Mysql完全卸载(包括其依赖和库等残留文件)
  6. LTE-M通信系统传输建模与可用性分析
  7. liteos简介(一)
  8. python自动化测试学习路线(从入门到精通)
  9. 【虚拟试衣论文】Generating High-Resolution Fashion Model Images Wearing Custom Outfits
  10. ValueError: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C