description

  • sosusosu 虐爆 OI 之后成为了一名文化课选手。一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式:

给定一个下标从000开始,无限长的整数列ai{a_{i}}ai​,i∈Ni \in Ni∈N ,已知a0,a1a_{0},a_{1}a0​,a1​ 的值,以及递推式ai+2=kai+1+aia_{i+2}=ka_{i+1}+a_{i}ai+2​=kai+1​+ai​,i∈Ni \in Ni∈N ,k∈N+k \in N^+k∈N+。

  • sosusosu 研究了这些数列,发现它们十分优美充满人类智慧,于是决定出一道 OI 题。
  • sosusosu 给了你一个集合 S⊂NS\subset NS⊂N,他想问你对于SSS中的每个数sis_isi​,使得asia_{s_{i}}asi​​最大的sis_{i}si​使得asia_{s_{i}}asi​​最小的sis_{i}si​分别是多少。如果这样的sis_{i}si​有多个,请你回答最小的一个。
  • 另外,sosusosu 准备对他作业中碰到的每个数列都让你回答一次,不过每次的集合SSS是一样的。
  • 数列数量n≤3∗105n\le3*10^5n≤3∗105,SSS中的元素个数m≤105m\le 10^5m≤105

solution

  • 手玩几组样例,可以得到一个结论:序列在经过某一个临界点之后会变成单调递增或单调递减,且最多只有前log2klog_2{k}log2​k个数是不单调的,请读者自证我太菜了不会证明
  • 故暴力判断前log2klog_2{k}log2​k个数,然后根据序列的单调性判断SSS中最大的一个数是最大值还是最小值即可
  • 注意如果前log2klog_2{k}log2​k个数中没有任何一个在SSS中,那么答案就会是S1S_1S1​,需要特判

code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline int read(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*f;
}
const int N=3e5+10;
const int M=1e5+10;
int m,n,s[M],w[M];
ll a[N];
int main(){//  freopen("ex_seq4.in","r",stdin);m=read();for(int i=1;i<=m;++i){s[i]=read();}n=read();while(n--){a[0]=read();a[1]=read();int k=read();int fi=min(100,s[m]);ll mx=-1e16,mn=1e16;int mxp=-1,mnp=-1;for(int i=2;i<=fi;++i){a[i]=1ll*k*a[i-1]+a[i-2];if(a[i]>1e15&&a[i-1]>=0&&a[i-2]>=0&&a[i]>=0){fi=i;break;}if(a[i]<-1e15&&a[i-1]<=0&&a[i-2]<=0&&a[i]<=0){fi=i;break;}}for(int i=1;i<=m;++i){if(s[i]<fi){if(a[s[i]]>mx) mx=a[s[i]],mxp=s[i];if(a[s[i]]<mn) mn=a[s[i]],mnp=s[i];}else break;}if(a[fi]>mx&&a[fi]>0)mxp=s[m];if(a[fi]<mn&&a[fi]<0)mnp=s[m];if(mxp==-1)mxp=s[1];if(mnp==-1)mnp=s[1];printf("%d %d\n",mxp,mnp);}return 0;

LOJ#538. 「LibreOJ NOIP Round #1」数列递推相关推荐

  1. LOJ#539. 「LibreOJ NOIP Round #1」旅游路线

    n<=100,m<=1000的图,在此图上用油箱容量C<=1e5的车来旅行,旅行时,走一条边会耗一单伟油,在点i时,若油量<ci,则可以把油以pi的价格补到ci,pi<= ...

  2. 「LibreOJ NOIP Round #1」旅游路线

    「LibreOJ NOIP Round #1」旅游路线 题目链接 做法: 首先肯定要预处理些东西,来使单词询问达到\(o(logn)\)或者\(o(1)\)的复杂度,又因为距离这个东西的范围太大,我们 ...

  3. LOJ #510. 「LibreOJ NOI Round #1」北校门外的回忆(倍增+动态开点线段树)

    题目 这个题是一个精彩的分析性质区间离散的问题 真的详细 维护链真的一绝. LOJ\rm LOJLOJ最短ACCode\rm AC \ CodeAC Code #include<bits/std ...

  4. 【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤

    [题意]一开始车上有编号为0~a的红茶,过程中出现的红茶编号仅有[0,b),有三种操作: 1.买进编号未在车上出现过的红茶. 2.丢掉车上指定编号的红茶. 3.将最早丢出去的红茶捡回来. 每次操作后求 ...

  5. LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)

    题面 传送门 题解 感谢\(@M\_sea\)的代码我总算看懂题解了-- 这个操作的本质就是每次把\(x\)的\(k\)进制最低位乘\(2\)并进位,根据基本同余芝士如果\(k\)是奇数那么最低位永远 ...

  6. LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树

    $f$ 函数暴力计算的话是 $O(n)$ 的(用一个 $\frac{x}{y}$ 来保存每一步计算结果,然后依次合并) 我们将一段区间的结果写成 $\frac{ax+by}{cx+dy}$ 的形式,初 ...

  7. LibreOJ NOIP Round #1」七曜圣贤

    B. 七曜圣贤 内存限制:1024 MiB时间限制:2500 ms标准输入输出 题目类型:传统评测方式:文本比较 题目描述 本题 C/C++ 时限 2.5 秒,Pascal 时限 5 秒.最后将改时限 ...

  8. 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)

    description 戳我看题目哦 solution 有一道非常相似的题目 一棵树,每条边限制两个端点的大小关系(限制 a[u]>a[v]a[u]>a[v]a[u]>a[v] 或 ...

  9. 【LOJ574】「LibreOJ NOI Round #2」黄金矿工

    [题目链接] 点击打开链接 [思路要点] 可参考 官方题解 . 以下为笔者个人的见解,方便起见,下称矿工为老鼠,金矿为洞. 我们可以对洞的权值加上深度,老鼠的权值减去深度,从而不需要考虑树的边权. 考 ...

最新文章

  1. 我的angularjs源码学习之旅2——依赖注入
  2. linux子系统gdp调试,Linux系统中GDB功能汇总
  3. [图文] Fedora 28 使用 Virt-Manager 创建 KVM 虚拟机以及 配置 KVM 虚拟机
  4. PHP中的ob_start用法详解
  5. Matlab遗传算法TSP求解
  6. uni-app框架介绍
  7. 川师c语言实验报告9,川师c语言实验报告十.doc
  8. VC 整人程序 修改分区表
  9. onhashchange事件--司徒正美
  10. Python函数必须先定义、后调用(函数调用函数例外)
  11. Python使用string.Formatter()制作打印模板
  12. xp下格式化linux分区的硬盘,Windows XP 下格式化和清理磁盘(转)
  13. Qt利用avilib实现录屏功能_利用CE修改LOL实现各种功能(无限视距、锁定视距、攻击距离、炮塔范围、人物大小等)...
  14. Vue / axios / props 调用后端接口数据并渲染到页面
  15. python文本文件对比_Python-文件差异对比
  16. java i18n utf_struts2.0乱码 在struts.xml里面设置struts.i18n.encoding=utf-8依然出现乱码是怎么回事呀...
  17. Disk Diet for mac (好用的磁盘清理软件)
  18. HCNP-RS培训视频课程[简讲版]-马青-专题视频课程
  19. 蓝牙的基本概念以及发展轨迹 - 蓝牙的前生后世
  20. 0.96寸OLED显示图片

热门文章

  1. Y-Combinator
  2. java循环嵌套语句示范_java的三种循环结构与循环嵌套
  3. 数据库学习笔记7关系数据库标准语言SQL
  4. 计算机默认存储格式,表格默认保存为et格式
  5. Arduino第一次上传代码报错
  6. 巧做卡拉OK遮罩字幕
  7. 微信小游戏开放测试~
  8. 2022-2028年中国半导体分立器件制造行业全景调研及竞争格局预测报告
  9. 轮播图自动滚动 无缝连接 js
  10. 2020年第11届蓝桥杯省赛Python组(真题+解析+代码):数字三角形