Loj 538 递推数列
Loj 538 递推数列
出题人:这题提高难度吧.于是放在了%你赛的 \(D1T2\) .
递推式为 \(a_i=k*a_{i-1}+a_{i-2}\) , 注意到 \(k\in \mathbb{N_+}\) ,容易发现一个比较显然的性质:
若 \(a_i>a_{i-1}\geq 0\) , 或者 \(a_i<a_{i-1}\leq 0\) ,则该数列在第 \(i-1\) 项后单调上升或单调下降.
基于这个性质,一个比较自然的想法是,一直爆算 \(a_i\) ,使得数列 \(a\) 单调后退出,再利用单调性来算答案.
这样搞能得到多少分? \(20?\ 25?\ 30?\) 万一被构造数据卡到很久都进不了单调咋办?
事实上,这样计算可以获得 \(100\) 分的好成绩.借助下面这张图来分析,比例可能不太真实,意会即可.

- 假定在 \(i=pos\) 处第一次满足 \(a_i>a_{i-1}\geq 0\) 或 \(a_i<a_{i-1}\leq 0\).那么 \(pos-1\) 之前的项都是正负交替出现的.否则若有 \(i<pos-1,0<a_i<a_{i-1}\) ,则 \(a_{i+1}>a_i>0\) , \(i+1<pos\) , 应是第一个找到的 \(pos\) ,矛盾.
- 那么记 \(b_i=|a_i|\) ,则有 \(\forall\ i\in [2,pos-1),b_i=-kb_{i-2}+b_{i-1}.\),且 \(b\) 单调递减.
- 移项变形,得 \(b_{i-2}=kb_{i-1}+b_i\geq(k+1)b_i\). 又因 \(k\in \mathbb{N_+}\) ,可得 \(pos\leq 2log_{k+1}|a_0|\) .
- 类似可以证明单调后在 \(O(loga)\) 个数内,绝对值将超过前面( \(S_1\) 内元素)的绝对值.
- 于是,整个算法的时间复杂度为 \(O(nloga)\) .实现起来细节比较多.
有时, \(yy\) 出一个做法或许并不难,难的是判断这个做法是否可行...
Loj 538 递推数列的更多相关文章
- The Nth Item 南昌网络赛(递推数列,分段打表)
The Nth Item \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 给出递推式,求解每次 \(F[n]\) 的值,输出所有 ...
- 九度OJ 1081:递推数列 (递归,二分法)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6194 解决:864 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第 ...
- HDU4565 So Easy! —— 共轭构造、二阶递推数列、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4565 So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- 九度OJ 1081 递推数列 -- 矩阵二分乘法
题目地址:http://ac.jobdu.com/problem.php?pid=1081 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= ...
- MT【319】分段递推数列
已知数列$ x_n $满足$ 0<x_1<x_2<\pi $,且\begin{equation*} x_{n+1}= \left\{ \begin{aligned}x_n+\sin ...
- MT【311】三角递推数列
已知数列$\{a_n\}$满足$a_1=\dfrac{1}{2},a_{n+1}=\sin\left(\dfrac{\pi}{2}a_n\right),S_n$ 为$\{a_n\}$的前$n$项和,求 ...
- HDU 2842 (递推+矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...
- Re.常系数齐次递推
前言 嗯 我之前的不知道多少天看这个的时候到底在干什么呢 为什么那么.. 可能大佬们太强的缘故 最后仔细想想思路那么的emmm 不说了 要落泪了 唔唔唔 前置 多项式求逆 多项式除法/取模 常 ...
- [洛谷P4723]【模板】线性递推
题目大意:求一个满足$k$阶齐次线性递推数列$a_i$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n-i}$ 题解:线性齐次递推,先见洛谷题解, ...
随机推荐
- 生产消费模式:多线程读写队列ConcurrentQueue
需求:现需要将多个数据源的数据导入到目标数据库,这是一个经典的生产消费应用的例子. 直接上代码,看下实现: // 初始化列队缓冲区 队列大小为100 IDataCollection<List&l ...
- 在lnmp下开启fileinfo扩展 Ubuntu系统
在lnmp下开启fileinfo扩展 Ubuntu系统 1.进入目录下 cd /usr/local/lnmp1.4-full/src/php-5.6.31/ext/fileinfo 2.phpize处 ...
- Apache的MaxClients设置
本文将介绍Apache的MaxClients参数的重要性以及在GC发生时对系统整体性能的显著影响.通过几个例子,你将会更清晰的理解MaxClients值所引发的问题.最后会介绍如何依据系统的可用内存来 ...
- mongo的集群部署
# MongoDB 集群部署 ## 关键词 * 集群 * 副本集 * 分片 ## MongoDB集群部署 >今天主要来说说Mongodb的三种集群方式的搭建Replica Set副本集 / Sh ...
- poj2823单调队列
这个裸题,滑动窗口求最大最小值,单调队列来两边,一次单调递增q[s]就是最小值,一次单调递减q[s]就是最大值 cin会超时,解除同步也没用... #include<map> #inclu ...
- 重新学习MySQL数据库6:浅谈MySQL的中事务与锁
『浅入深出』MySQL 中事务的实现 在关系型数据库中,事务的重要性不言而喻,只要对数据库稍有了解的人都知道事务具有 ACID 四个基本属性,而我们不知道的可能就是数据库是如何实现这四个属性的:在这篇 ...
- 使用Easy4net编写代码生成器
在项目中经常要手动创建和数据库对应的实体类,如果数据库表比较多或者表字段比较多,那会是一个工作量非常大的事情,所以我根据自己的需求写了一个简单的代码生成工具,工具使用Easy4net框架开发. 下面是 ...
- poj 3411 Paid Roads很水的DFS
题意:给你N 城市和M条道路,每条道路要付的钱,但是如果你在这个道路上你可以付其他道路的钱(跟走到的时候去的话不一样),问你从1走到N最少话费是多少. 直接DFS搜. 链接http://poj.org ...
- S16 day7 socket
网络基础之网络协议篇:http://www.cnblogs.com/linhaifeng/articles/5937962.html 参考博客:http://www.cnblogs.com/linha ...
- 安装使用babel-polyfill。让IE支持es6
安装 npm install --save-dev babel-polyfill 使用 在你的代码头部加载babel-polyfill,注意一定要在你的代码开始前,第一个js文件的顶部.如果是vue在 ...