description

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

给定一个下标从\(0\)开始,无限长的整数列\({a_{i}}\),\(i \in N\) ,已知\(a_{0},a_{1}\) 的值,以及递推式\(a_{i+2}=ka_{i+1}+a_{i}\),\(i \in N\) ,\(k \in N^+\)。

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

solution

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

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. 【LibreOJ】#538. 「LibreOJ NOIP Round #1」数列递推

    [题意]LibreOJ [算法]乱搞 [题解]容易发现数列最后一定单调,最后单调递增则最大值赋为最后一个,反之最小值赋为最后一个,然后处理一些细节就可以AC,要注意以下几点: 1.数列连续三项以及数列 ...

  2. 「LOJ 537」「LibreOJ NOIP Round #1」DNA 序列

    description NOIP 复赛之前,HSD 桑进行了一项研究,发现人某条染色体上的一段 DNA 序列中连续的\(k\)个碱基组成的碱基序列与做题的 AC 率有关!于是他想研究一下这种关系. 现 ...

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

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

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

    有一辆车一开始装了编号0-a的奶茶,现有m次操作,每次操作Pi在[-1,b),若Pi为一个未出现过编号的奶茶,就把他买了并装上车:若Pi为一个在车上的奶茶,则把他丢下车:否则,此次操作为捡起最早丢下去 ...

  5. LOJ #539. 「LibreOJ NOIP Round #1」旅游路线 倍增floyd + 思维

    考试的时候是这么想的: 求出每一个点花掉 $i$ 的花费向其他点尽可能走的最长距离,然后二分这个花费,找到第一个大于 $d$ 的就输出$.$然而,我这个记忆化搜索 $TLE$ 的很惨$.$这里讲一下正 ...

  6. 「LOJ 541」「LibreOJ NOIP Round #1」七曜圣贤

    description 题面很长,这里给出题目链接 solution 用队列维护扔掉的红茶,同时若后扔出的红茶比先扔出的红茶编号更小,那么先扔出的红茶不可能成为答案,所以可以用单调队列维护 故每次询问 ...

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

    description 题面较长,这里给出题目链接 solution 考虑预处理出\(f[i][j]\)表示在第\(i\)个点加满油后,从第\(i\)个点出发,至多消耗\(j\)元钱走过的最大路程,那 ...

  8. 题解【loj537】「LibreOJ NOIP Round #1」DNA 序列

    题目描述 \(NOIP\)复赛之前\(HSD\)桑进行了一项研究,发现人某条染色体上的一段\(DNA\)序列中连续的\(k\)个碱基组成的碱基序列与做题的 \(AC\) 率有关!于是他想研究一下这种关 ...

  9. <题解>「LibreOJ NOIP Round #1」序列划分

    solutions 题面loj#542 对我来说,这或许已经超出了我的能力,我,只能看题解 不知道我写完这一篇题解之后,会不会对我的构造题有一点点的帮助 让我在这类题的解决上能过有一些提升 直接说明白 ...

随机推荐

  1. Java 中的 Lambda 表达式

    Lambda表达式 Lambda 表达式是 JDK1.8 的一个新特性,又称特殊的匿名内部类,可以取代大部分的匿名内部类,语法更简洁,可以写出更优雅的 Java 代码,可以极大地优化代码结构. Lam ...

  2. 《JavaScript高级程序设计》——第四章 变量、作用域和内存管理

    JavaScript变量可以用保存两种类型的值:基本类型值和引用类型值.基本类型的值源自以下基本类型数据:Undefined.Null.Boolean.Number和String. 从一个变量向另一个 ...

  3. 从eclipse迁移到ideal

    个人用eclipse比较多,什么Luna,Neon,Mars.几乎每年都要研发出一个版本.目前所在的这家公司,维护的是一个10年的老项目,需求迭代频率比较高,业务代码臃肿而难理解,依赖关系不清晰,代码 ...

  4. Spring入门-------------1

    Spring是一个开源框架,为简化企业级应用开发而生,使用Spring可以使简单的JavaBean 实现以前只有EJB才能实现的功能.Spring 是一个IOC和Aop容器框架. 特性: 轻量级:Sp ...

  5. 白话科普,10s 了解 API

    作为一名又拍云的技术支持工程师,小拍每天都会接收到很多客户的提问.这其中,有很多客户会问:"小拍,请问云存储上传除了使用控制台的文件管理和 FTP 工具之外,有没有其他的途径进行上传呢?&q ...

  6. 老大说新项目的结构和 xxx 项目一样就可以了,我 ……(使用 Maven Archetype 快速创建项目)

    前言 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了. 公众号:liuzhihangs,记录工作学习中的技术.开发及源码笔记:时不时分享一些生活中的见闻 ...

  7. How to use vscode to build a springboot project

    How to use vscode to build a springboot project 首先截图一个springboot官网的一个教程说明截图.可以根据这里的指南去创建一个HelloWorld ...

  8. leetcode4:sort-list

    题目描述 在O(n log n)的时间内使用常数级空间复杂度对链表进行排序. Sort a linked list in O(n log n) time using constant space co ...

  9. lambda表达式的distinct去重

    天真的我最开始以为可以写成list.distinct(x=>x.name);以为这样就可以按照name去重了,结果是不行的.这里记录下正确的用法. 1.这里是针对int集合  可以满足 #reg ...

  10. .NetMvc从http或本地下载pdf文件

    1.帮助类 1 public static class PdfHelper 2 { 3 #region 从http链接下载 4 public static void Download(string u ...