UER#7 T2
题意:给定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 ;
}
UER#7 T2的更多相关文章
- [Noip2016]蚯蚓 D2 T2 队列
[Noip2016]蚯蚓 D2 T2 Description 本题中,我们将用符号[c]表示对c向下取整,例如:[3.0」= [3.1」=[3.9」=3.蛐蛐国最近蚯蚓成灾了!隔壁跳 蚤国的跳蚤也拿蚯 ...
- T2 Func<in T1,out T2>(T1 arg)
委托调用方法的4种方式. using System; using System.Collections.Generic; namespace ConsoleApplication1 { delegat ...
- Hotelling T2检验和多元方差分析
1.1 Hotelling T2检验 Hotelling T2检验是一种常用多变量检验方法,是单变量检验的自然推广,常用于两组均向量的比较. 设两个含量分析为n,m的样本来自具有公共协方差阵的q维正态 ...
- bzoj4034: [HAOI2015]T2
4034: [HAOI2015]T2 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2684 Solved: 843 Description 有一 ...
- 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数
本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...
- UOJ244 【UER #7】短路
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
- NOIP欢乐模拟赛 T2 解题报告
小澳的坐标系 (coordinate.cpp/c/pas) [题目描述] 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个 ...
- Action<T1, T2>委托
封装包含两个参数的方法委托,没有返回值. 语法 public delegate void Action<in T1, in T2>( T1 arg1, T2 arg2 ) 类型参数 in ...
- NOIP2013普及组 T2 表达式求值
OJ地址:洛谷P1981 CODEVS 3292 正常写法是用栈 #include<iostream> #include<algorithm> #include<cmat ...
随机推荐
- 微信小程序-关于日期选择器(input)
小程序并没有input带有日期组件(只有picker组件带日期),要不自创,要不就用picker把选中的值放入input当中 wxml js 因为会触发input,所以禁用它就可以了
- TP框架模板中ifelse
{if $_username}<ul class="afterLogin"> <li class="username"><a ...
- JS图片预加载插件
在开发H5项目中有时候会遇到要加载大量图片的情况,利用预加载技术可以提高用户浏览时的体验. 1)概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片.预加载:提前加载 ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- CentOS 6.5语言包裁剪
https://www.ibm.com/developerworks/cn/linux/l-cn-linuxglb/ 浅析 Linux 的国际化与本地化机制 Linux 是一个国际化的操作系统,它的工 ...
- jQuery--基础(查询标签)
浅谈jQuery使用背景 jQuery是使用原生js写成的一个库,使用简单,提高开发效率.在用js冗杂的代码解决的问题中,大部分都可以用jQuery来快速解决. 例如: js中查询网页中ID为&quo ...
- Redis专题(2):Redis数据结构底层探秘
前言 上篇文章Redis闲谈(1):构建知识图谱介绍了redis的基本概念.优缺点以及它的内存淘汰机制,相信大家对redis有了初步的认识.互联网的很多应用场景都有着Redis的身影,它能做的事情远远 ...
- 关于msbuild 编译.net 4.5新语法错误的解决方法
.net4.5以前msbuild 是在%windir%/Microsoft.NET/FrameworkXX/vXX目录下,如:C:\Windows\Microsoft.NET\Framework64\ ...
- rtmp直播拉流客户端EasyRTMPClient TCP窗口大小设计方法
EasyRTMPClient 简介 EasyRTMPClient是EasyDarwin流媒体团队开发.提供的一套非常稳定.易用.支持重连接的RTMPClient工具,以SDK形式提供,接口调用非常简单 ...
- EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
之前在进行EasyNVR多屏开发的时候,由于多屏功能不需要在手机端展示出来(pc多播放为RTMP,手机端播放为HLS),因此只注意到了引用videojs来进行rtmp的播放.由于不同项目需求不同,对h ...