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 递推数列的更多相关文章

  1. The Nth Item 南昌网络赛(递推数列,分段打表)

    The Nth Item \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 给出递推式,求解每次 \(F[n]\) 的值,输出所有 ...

  2. 九度OJ 1081:递推数列 (递归,二分法)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6194 解决:864 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= 2. 求第 ...

  3. HDU4565 So Easy! —— 共轭构造、二阶递推数列、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4565 So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory L ...

  4. 九度OJ 1081 递推数列 -- 矩阵二分乘法

    题目地址:http://ac.jobdu.com/problem.php?pid=1081 题目描述: 给定a0,a1,以及an=p*a(n-1) + q*a(n-2)中的p,q.这里n >= ...

  5. MT【319】分段递推数列

    已知数列$ x_n $满足$ 0<x_1<x_2<\pi $,且\begin{equation*} x_{n+1}= \left\{ \begin{aligned}x_n+\sin ...

  6. 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$项和,求 ...

  7. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  8. Re.常系数齐次递推

    前言 嗯   我之前的不知道多少天看这个的时候到底在干什么呢 为什么那么..  可能大佬们太强的缘故 最后仔细想想思路那么的emmm 不说了  要落泪了 唔唔唔 前置 多项式求逆 多项式除法/取模 常 ...

  9. [洛谷P4723]【模板】线性递推

    题目大意:求一个满足$k$阶齐次线性递推数列$a_i$的第$n$项. 即:$a_n=\sum\limits_{i=1}^{k}f_i \times a_{n-i}$ 题解:线性齐次递推,先见洛谷题解, ...

随机推荐

  1. [小问题笔记(六)] 解决JS已执行,输出内容乱码问题. 顺带总结编码相关知识

    问题: JS输出的内容出现了乱码.如图: 分析:既然年和月的数字可以正常显示,证明js加载和执行都没有问题 解决:把js引用处的编码方式改成当前页面编码一致.charset="gb2312& ...

  2. 编译binutil包报错cc: error trying to exec 'cc1obj': execvp: No such file or directory

    在http://forums.fedoraforum.org/showthread.php?t=267449中找到的解决方法 $LFS/sources/binutils-2.15.91.0.2/gpr ...

  3. UVa 11768 格点判定(扩展欧几里得求线段整点)

    https://vjudge.net/problem/UVA-11768 题意: 给定两个点A(x1,y1)和B(x2,y2),均为0.1的整数倍.统计选段AB穿过多少个整点. 思路: 做了这道题之后 ...

  4. HDU 5699 二分+线性约束

    http://acm.hdu.edu.cn/showproblem.php?pid=5699 此题满足二分性质,关键在于如何判断当前的时间值可以满足所有的运送方案中的最长的时间. 对于每一次枚举出的k ...

  5. mysql中一个字段根据另一字段的值分割为不同列

    1.数据结构如下: vehicleId mileage_type mileage 11AM6897           0 120 11AM6897           1 60 13AY9180 0 ...

  6. Reverse a String

    题目: 翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串. 你的结果必须得是一个字符串 这是一些对你有帮助的资源: Global String Ob ...

  7. VS2010制作安装程序

    转自(http://blog.csdn.net/wenmang1977/article/details/7733685) 序 前些天想写一下制作安装程序,由于要写的内容比较多,一拖再拖,不过坚持就是胜 ...

  8. sql 日志统计-日、周、月活跃数

    近日网站需求:统计日志表的 日.周.月活跃数.最终研究了出来了,分享给大家看下.  如果有更好的sql语句也可以评论下方. --日活跃量 ), cr.AddTime, )as addtimt,COUN ...

  9. cf 915

    t1:2分钟ac,简单模拟 t2:3发wa,最后再10分钟的时候过了 但是最后被hack了 t3:2发wa,最后还是被hack了 t4:拓扑排序 然后将一个点入度减一 然后是否能拓扑 t5:离散化+线 ...

  10. EasyUI Combobox 组合框

    默认选择第一项,加请选择,取值问题 <input class="easyui-combobox" id="ddlWHS" name="ddlWH ...