标签:理想 min std lin style blog text max continue
注意到常数线性递推数列是以指数的速度增长的,所以对每个询问我们暴力找到哪一项开始单调,再判断一下就好了
我没有删文件读写,真好玩
考完期中考后已经丧失理想了,现在出现这种错误,更加丧失理想fk
#include<stdio.h>
#define ll long long
#define inf 9223372036854775807ll
ll a[1000010];
int s[100010];
int main(){
int n,q,i,len,minp,maxp;
ll k,minans,maxans,totmin,totmax;
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",s+i);
scanf("%d",&q);
while(q--){
scanf("%lld%lld%lld",a,a+1,&k);
if(a[0]==0&&a[1]==0){
printf("%d %d\n",s[1],s[1]);
continue;
}
len=1;
while(a[len]*a[len-1]<0){
len++;
a[len]=a[len-1]*k+a[len-2];
}
if(a[len]>0||a[len-1]>0){
totmax=-inf;
for(i=0;i<=len;i++){
if(a[i]>totmax)totmax=a[i];
}
while(a[len]<=totmax){
len++;
a[len]=a[len-1]*k+a[len-2];
}
if(s[n]<=len){
minans=inf;
maxans=-inf;
for(i=1;i<=n;i++){
if(a[s[i]]<minans){
minans=a[s[i]];
minp=s[i];
}
if(a[s[i]]>maxans){
maxans=a[s[i]];
maxp=s[i];
}
}
}else if(s[1]>=len){
minp=s[1];
maxp=s[n];
}else{
maxp=s[n];
minans=inf;
for(i=1;s[i]<=len;i++){
if(a[s[i]]<minans){
minans=a[s[i]];
minp=s[i];
}
}
}
}else{
totmin=inf;
for(i=0;i<=len;i++){
if(a[i]<totmin)totmin=a[i];
}
while(a[len]>=totmin){
len++;
a[len]=a[len-1]*k+a[len-2];
}
if(s[n]<=len){
minans=inf;
maxans=-inf;
for(i=1;i<=n;i++){
if(a[s[i]]<minans){
minans=a[s[i]];
minp=s[i];
}
if(a[s[i]]>maxans){
maxans=a[s[i]];
maxp=s[i];
}
}
}else if(s[1]>=len){
minp=s[n];
maxp=s[1];
}else{
minp=s[n];
maxans=-inf;
for(i=1;s[i]<=len;i++){
if(a[s[i]]>maxans){
maxans=a[s[i]];
maxp=s[i];
}
}
}
}
printf("%d %d\n",maxp,minp);
}
}
标签:理想 min std lin style blog text max continue
原文地址:http://www.cnblogs.com/jefflyy/p/7788133.html