【PE258】A lagged Fibonacci sequence
【题目链接】
- 点击打开链接
【思路要点】
- 用Cayley-Hamilton定理优化线性递推。
- 时间复杂度O(N2LogK)O(N2LogK)O(N^2LogK),其中N=2000,K=1018N=2000,K=1018N=2000,K=10^{18}。
【代码】
#include<bits/stdc++.h>using namespace std; const int MAXN = 4005; const int P = 20092010; template <typename T> void chkmax(T &x, T y) {x = max(x, y); } template <typename T> void chkmin(T &x, T y) {x = min(x, y); } template <typename T> void read(T &x) {x = 0; int f = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';x *= f; } template <typename T> void write(T x) {if (x < 0) x = -x, putchar('-');if (x > 9) write(x / 10);putchar(x % 10 + '0'); } template <typename T> void writeln(T x) {write(x);puts(""); } int k, h[MAXN], now[MAXN], res[MAXN]; void times(int *a, int *b) {static int tmp[MAXN];memset(tmp, 0, sizeof(tmp));for (int i = 0; i <= k; i++)for (int j = 0; j <= k; j++)tmp[i + j] = (tmp[i + j] + 1ll * a[i] * b[j]) % P;for (int i = 2 * k; i >= k; i--) {tmp[i - 1999] = (tmp[i - 1999] + tmp[i]) % P;tmp[i - 2000] = (tmp[i - 2000] + tmp[i]) % P;tmp[i] = 0;}memcpy(a, tmp, sizeof(tmp)); } int main() {k = 2e3;for (int i = 1; i <= k; i++)h[i] = 1;res[0] = now[1] = 1;long long n = 1e18;n = n + 1 - k;while (n != 0) {if (n & 1) times(res, now);n >>= 1; times(now, now);}for (int i = k + 1; i <= 2 * k; i++)h[i] = (h[i - 1999] + h[i - 2000]) % P;int ans = 0;for (int i = 0; i <= k - 1; i++)ans = (ans + 1ll * res[i] * h[i + k]) % P;writeln(ans);return 0; }
【PE258】A lagged Fibonacci sequence相关推荐
- 【BZOJ2813】奇妙的Fibonacci
Description Fibonacci数列是这样一个数列: F1 = 1, F2 = 1, F3 = 2 . . . Fi = Fi-1 + Fi-2 (当 i >= 3) pty忽 ...
- oracle 序列开始为2,【图片】【求助】为啥Oracle的sequence 第一次插入表从2开始。。【java吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 SQL> select * from counter; ID---------- 1 SQL> drop table counter; 表已删 ...
- 【CodeForces】CF26B Regular Bracket Sequence
题目地址: https://www.luogu.com.cn/problem/CF26B 题面翻译: 给出一个括号的序列,求最长的合法的子序列并输出. 原序列的长度≤106\le 10^6≤106 题 ...
- 【CTR】《Towards Universal Sequence Representation Learning for Recommender Systems》 (KDD‘22)
<Towards Universal Sequence Representation Learning for Recommender Systems> (KDD'22) 序列推荐是根据用 ...
- 【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分
时序图教程 甲序列图描述了一组对象之间的相互作用参与协作(或情况),布置成按时间顺序; 它通过它们的"生命线"和它们发送给对方的消息来显示参与交互的对象. 什么是UML中的序列图? ...
- 【最优化】黄金分割法与Fibonacci法
(1)黄金分割法(0.618法) 基本思想: 它通过对试探点的函数值进行比较,使得包含极小点的区间不断缩短,当区间长度小到精度范围之内时,可以粗略地认为区间上各点的函数值均接近于极小值. 算 ...
- 【BZOJ】4355: Play with sequence
传送门 http://www.lydsy.com/JudgeOnline/problem.php?id=4355 吉司机线段树(去年又在现场系列) 某Q:线段树带来的沉重打击 写得巨挫,下次肯定会去换 ...
- 【HDOJ】1021 Fibonacci Again_天涯浪子_新浪博客
[题目]http://acm.hdu.edu.cn/showproblem.php?pid=1021 [报告] 题意是问F[i]是否能被3整除. 根据 (a+b)%m=(a%m+b%m)%m 原则(具 ...
- 序列(【CCF】NOI Online能力测试 提高组第一题)
[题目描述] 小 D 有一个长度为 n 的整数序列 ai(下标从 1 开始编号,下同),她想通过若干次操作把它变成序列 bi. 小 D 有 m种可选的操作,第 i 种操作可使用三元组 (ti,ui,v ...
最新文章
- ID3、C4.5、C5.0、CART决策树区别
- Java如何转换protobuf-net中的bcl.DateTime对象
- 太强了!这个 Jupyter notebook 离线工具可以用一辈子!
- 笔记本软件页面分辨率低_AMD宠粉日 适合设计师的高色域笔记本电脑
- python文件名匹配
- linux 嵌入式 人工智能,嵌入式人工智能有哪些相关技术
- 再谈new functionName
- 3D物理引擎JiglibFlash
- 使用ConfigurationManager来写自己的配置文件
- android 音效下载地址,V4A+Dolby Atmos安卓全局音效
- SciML求解简谐振动的微分方程
- 星光大道视频播放器精品版
- 单目相机三维姿态解算
- 基于Arduino IDE开发的LD3320语音识别模块
- node python做游戏服务哪个适合做服务端_当前的几种开源游戏服务端介绍
- 提高图片的清晰度和加载速度
- 周期循环图像边界算法
- 宝塔linux面板时区不正确怎么修改
- MySQL like模糊匹配是否走索引
- win7怎么设置计算机的性能,windows7旗舰版电脑如何为电脑设置高性能计划