标签:理想 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