题意:给定n个数,对于2到n,分别输出一个答案。答案定义为:对于当前的数k,在原数组中找一个长度为k的区间,使得区间最值之差最小,输出差值。注意,差值允许5%的误差。

很少看见近似算法的题啊。。跪烂VFK大爷。

首先可以注意到的是,答案一定是单增的。我们再发现,随着1.05指数不断增加,之后肯定会有质的飞跃(毕竟是指数函数),也就是说,到时候一定有一大段区间的答案都是同一个数。所以我们只要分别找出每一个段的答案就好了。段数大概是log的(不会证,凭感觉吧。。。

先把2和n的答案计算出来,然后分治下去。如果当前分治的区间,左端点的答案误差范围已经和右边答案的误差范围相交,说明夹在他们中间的数们答案全一样,随便选一个复制给他们就好了。

时间复杂度O(nlogn)。跪烂。。

 #include<bits/stdc++.h>
using namespace std;
#define N 100005
#define INF 1e9
#define eps 1e-5
inline int read(){
int x=,f=; char a=getchar();
while(a<'' || a>'') {if(a=='-') f=-; a=getchar();}
while(a>='' && a<='') x=x*+a-'',a=getchar();
return x*f;
}
int n,mx[N][],mn[N][],ans[N],Log[N];
inline int Max(int x){
return (int)((double)x*1.05+eps);
}
inline int Min(int x){
return (int)((double)x*0.95+-eps);
}
inline void pre(){
Log[]=-; for(int i=;i<=n;i++) Log[i]=Log[i>>]+;
for(int i=;i<=;i++)
for(int j=;j<=n;j++){
mx[j][i]=max(mx[j][i-],mx[min(n,j+(<<(i-)))][i-]);
mn[j][i]=min(mn[j][i-],mn[min(n,j+(<<(i-)))][i-]);
}
}
inline int qmx(int l,int r){
return max(mx[l][Log[r-l+]],mx[r-(<<Log[r-l+])+][Log[r-l+]]);
}
inline int qmn(int l,int r){
return min(mn[l][Log[r-l+]],mn[r-(<<Log[r-l+])+][Log[r-l+]]);
}
inline void cal(int x){
ans[x]=INF;
for(int i=;i<=n-x+;i++) ans[x]=min(ans[x],qmx(i,i+x-)-qmn(i,i+x-));
}
void dc(int l,int r){
if(r-l<=) return;
if(Max(ans[l])>=Min(ans[r])){
int tmp=Max(ans[l]);
for(int i=l+;i<r;i++) ans[i]=tmp;
return;
}
int mid=(l+r)>>;
cal(mid);
dc(l,mid); dc(mid,r);
}
int main(){
n=read(); for(int i=;i<=n;i++) mx[i][]=mn[i][]=read();
pre();
cal(); cal(n); dc(,n);
for(int i=;i<=n;i++) printf("%d\n",ans[i]);
return ;
}

最新文章

  1. 【转载】使用Pandas进行数据提取
  2. lisp等
  3. Javascript学习笔记:闭包题解(1)
  4. PBR实现2.0
  5. [CentOS]添加删除用户
  6. WP8.1 Study18:动态磁贴
  7. H3C Series Router MSR26-00与F3736 VPN IP SEC
  8. javascript学习之位置获取
  9. 梯度下降之随机梯度下降 -minibatch 与并行化方法
  10. [转]使用CSS3 Grid布局实现内容优先
  11. HW6.27
  12. QtSQL学习笔记(1)- 概述
  13. jquery各种事件使用方法总结(from:天宇之游)
  14. 我的Python学习笔记(二):浅拷贝和深拷贝
  15. SFTP环境搭建及客户代码调用公共方法封装
  16. Perl正则表达式超详细教程
  17. vue之综合Demo:打沙袋
  18. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
  19. 【POJ1509】Glass Beads
  20. ML(5)——神经网络2(BP反向传播)

热门文章

  1. jquery插件范例代码
  2. Time倒计时
  3. 如何在cmd中启动redis
  4. Mysql或者Hive数据行变成列
  5. leetCode 61.Rotate List (旋转链表) 解题思路和方法
  6. aar格式
  7. Highcharts使用表格数据绘制图表
  8. CentOS下安装python3.x版本
  9. 移除WordPress文章图片的宽度和高度属性
  10. Centos 7.0系统服务管理