[bzoj4850][Jsoi2016]灯塔
#include<iostream>
#include<cstdio>
#include<cmath>
#define getchar() (*S++)
#define MN 500000
#define INF 2000000000
char B[<<],*S=B;
using namespace std;
inline int read()
{
int x = , f = ; char ch = getchar();
while(ch < '' || ch > ''){ if(ch == '-') f = -; ch = getchar();}
while(ch >= '' && ch <= ''){x = x * + ch - '';ch = getchar();}
return x * f;
} int n,a[MN+],top,tail,q[MN+];
double F[MN+],G[MN+],sq[MN+];
inline int My_abs(int x){return x<?-x:x;}
double Get(int x,int y){return a[x]+sq[My_abs(y-x)];} int Calc(int x,int y)
{
int l=y,r=n,mid,ans=INF;
while(l<=r)
{
mid=l+r>>;
if(Get(y,mid)>=Get(x,mid)) ans=mid,r=mid-;
else l=mid+;
}
return ans;
} void Solve(double*f)
{
top=;tail=;
for(register int i=;i<=n;++i)
{
if(top<tail||a[i]>a[q[top]])
{
while(top>tail&&Calc(q[top],i)<=Calc(q[top-],q[top])) --top;
q[++top]=i;
}
while(top>tail&&Calc(q[tail],q[tail+])<=i) ++tail;
f[i]=Get(q[tail],i)-a[i];
}
} int main()
{
fread(B,,<<,stdin);
n=read();
for(int i=;i<=n;++i) sq[i]=sqrt(i);
for(int i=;i<=n;++i) a[i]=read();
Solve(F);
for(int i=;i<=n>>;++i) swap(a[i],a[n+-i]);
Solve(G);
for(int i=;i<=n;++i) printf("%d\n",max(,(int)ceil(max(F[i],G[n+-i]))));
return ;
}
[bzoj4850][Jsoi2016]灯塔的更多相关文章
- [BZOJ4850][JSOI2016]灯塔(分块/决策单调性优化DP)
第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由 ...
- BZOJ4850/BZOJ2216 JSOI2016灯塔/Poi2011Lightning Conductor(决策单调性)
即对每个i最大化hj-hi+sqrt(|i-j|).先把绝对值去掉,正反各做一次即可.注意到当x>y时,sqrt(x+1)-sqrt(x)<sqrt(y+1)-sqrt(y),所以若对于i ...
- [JSOI2016]灯塔
Description $JSOI$的国境线上有$N$一座连续的山峰,其中第$i$座的高度是$h_i$.为了简单起见,我们认为这$N$座山峰排成了连续一条直线. 如果在第$i$座山峰上建立一座高度 ...
- [BZOJ 4850][Jsoi2016]灯塔
传送门 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) ...
- DP学习记录Ⅱ
DP学习记录Ⅰ 以下为 DP 的优化. 人脑优化DP P5664 Emiya 家今天的饭 正难则反.考虑计算不合法方案.一个方案不合法一定存在一个主食,使得该主食在多于一半的方法中出现. 枚举这个&q ...
- 「JSOI2016」灯塔
「JSOI2016」灯塔 传送门 我们先只计算照亮左边的灯塔的最低高度,计算右边的类同,然后只要取 \(\max\) 就好了. 那么稍微整理一下式子:\(p_i \ge h_j - h_i + \sq ...
- loj2074 「JSOI2016」灯塔
loj 题面错的--去bzoj上看吧qwq 观察到 \(\sqrt{|i-j|}\) 的取值只有 \(\sqrt{n}\) 级别个,然后就很显然了,rmq. #include <iostream ...
- ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))
TsingHua OJ 上不能使用<algorithm>头文件,因此需要手写快排(刚开始写的时候自己就出了很多问题....),另外本题需要在给横坐标排序后,需要记录纵坐标的顺序对的数量,因 ...
- 【Tsinghua OJ】灯塔(LightHouse)问题
描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的 ...
随机推荐
- Twisted UDP编程技术
实战演练1:普通UDP UDP是一种无连接对等通信协议,没有服务器和客户端概念,通信的任何一方均可通过通信原语直接和其他方通信 1.相对于TCP,UDP编程只需定义DatagramProtocol子类 ...
- 本地通知UILocalNotification
1.增加一个本地推送 //设置20秒之后 ]; //chuagjian一个本地推送 UILocalNotification *noti = [[[UILocalNotification alloc] ...
- Java语言基础组成
写完才发现,这个博客不提供目录这个功能,真是想骂爹了...... 目录 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 1.关键字 描述:刚刚开始学这个的时候,真是傻傻分不清楚,不过没关系 ...
- JAVA_SE基础——43.抽象类
高手勿喷~ 抽象类:当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的.例如定义Animal类时,shout()方法用于表示动物的叫声,但是针对不同的动物, ...
- bootstrap的ajax提交
一般后台界面都用bootstrap框架,这是一个css框架,里面封装了ajax方法,只需要在样式中指定就行,根本自己不用写 <td> <eq name='item.status' v ...
- python random 模块的用法
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- vuex在项目中使用的一点总结
以下为vue后台管理项目中使用vuex的一点总结,截取了其中部分代码,如有什么错误,还望指出. 1. token 存储 登陆成功之后,需要把获取到的 token 存储到 vuex 中,配合 axios ...
- Python 爬取淘宝商品信息和相应价格
!只用于学习用途! plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) :获得商品价格和view_pri ...
- 输入法searchLookUpEditd的使用
输入法是DevExpress系列控件比较常用的一个控件.searchLookUpEditd控件集成了快捷输入法,可以使用拼音,五笔等方式快捷输入. 先展示一下输入法的效果
- linux下查看mysql日志文件的方法
查看mysql日志方法: mysql默认不允许我们查看日志.需要更改一些设置 1 vi 更改配置文件 允许用户查看日志文件 sudo vi /etc/mysql/mysql.conf.d/mysqld ...