[JSOI 2016] 灯塔
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=4850
[算法]
首先对不等式进行移项 :
hj <= hi + p - sqrt(|i - j|)
p >= hj - hi + sqrt(|i - j|)
显然 , sqrt(|i - j|)最多只有sqrt(n)个不同的值
用ST表求区间最值 , 然后分块计算即可
时间复杂度: O(Nsqrt(N))
[代码]
#include<bits/stdc++.h>
using namespace std;
#define MAXN 200010
#define MAXLOG 20
#define sqr(x) x * x int n;
int lg[MAXN] , bit[];
long long h[MAXN];
long long value[MAXN][MAXLOG]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline long long query(int l,int r)
{
int k = lg[r - l + ];
return max(value[l][k],value[r - bit[k] + ][k]);
} int main()
{ read(n);
for (register int i = ; i < MAXN; i++) lg[i] = (double)log(i) / log(2.0);
bit[] = ;
for (register int i = ; i <= ; i++) bit[i] = bit[i - ] << ;
for (register int i = ; i <= n; i++) read(h[i]);
for (register int i = ; i <= n; i++) value[i][] = h[i];
for (register int i = ; i < MAXLOG; i++)
{
for (register int j = ; j + ( << i) <= n; j++)
{
value[j][i] = max(value[j][i - ],value[j + bit[i - ]][i - ]);
}
}
for (register int i = ; i <= n; i++)
{
int l = i , r , sq = ;
long long ans = ;
while (l != )
{
r = l - ;
l = max(,i - sqr(sq));
chkmax(ans,sq + query(l,r) - h[i]);
sq++;
}
r = i , sq = ;
while (r != n)
{
l = r + ;
r = min(n,i + sqr(sq));
chkmax(ans,sq + query(l,r) - h[i]);
sq++;
}
printf("%lld\n",ans);
} return ;
}
[JSOI 2016] 灯塔的更多相关文章
- JSOI 2016 扭动的字符串
JSOI 2016 扭动的字符串 题面描述 给出两个长度为\(n\)的字符串\(A,B\) \(S(i,j,k)\)表示把\(A\)中的\([i,j]\)和\(B\)中的\([j,k]\)拼接起来的字 ...
- [JSOI 2016] 最佳团体(树形背包+01分数规划)
4753: [Jsoi2016]最佳团体 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2003 Solved: 790[Submit][Statu ...
- 解题:JSOI 2016 最佳团体
题面 0/1分数规划+树形背包检查 要求$\frac{\sum P_i}{\sum S_i}的最大值,$按照0/1分数规划的做法,二分一个mid之后把式子化成$\sum P_i=\sum S_i*mi ...
- [JSOI 2016] 最佳团体
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4753 [算法] 很明显的分数规划 可以用树形动态规划(树形背包)检验答案 时间复杂度 ...
- JSOI 2016 病毒感染 辅助Dp问题
原题链接:https://www.luogu.com.cn/problem/P5774 分析 直接看这道题,第一个困惑点,那个绝对值的比较是什么东西,根据数学知识,我们可以知道这个意思是k到i的距离小 ...
- [bzoj4850][Jsoi2016]灯塔
来自FallDream的博客,未经允许,请勿转载,谢谢. JSOI的国境线上有N一座连续的山峰,其中第ii座的高度是hi??.为了简单起见,我们认为这N座山峰排成了连续一条 直线.如果在第ii座山峰上 ...
- [JSOI2016]灯塔
Description $JSOI$的国境线上有$N$一座连续的山峰,其中第$i$座的高度是$h_i$.为了简单起见,我们认为这$N$座山峰排成了连续一条直线. 如果在第$i$座山峰上建立一座高度 ...
- JSOI部分题解
JSOI部分题解 JSOI2018 战争 问题转化为给定你两个凸包\(\mathbb S,\mathbb T\),每次独立的询问将\(\mathbb T\)中的每个点移动一个向量,问\(\mathbb ...
- Be Better:遇见更好的自己-2016年记
其实并不能找到好的词语来形容过去的一年,感觉就如此平淡的过了!没有了毕业的稚气,看事情淡了,少了一丝浮躁,多了一分认真.2016也许就是那句话-多读书,多看报,少吃零食多睡觉,而我更愿意说--Be B ...
随机推荐
- jmeter 性能插件
mv jmeter-plugins-manager-0.16.jar /usr/local/Cellar/jmeter/3.1/libexec/lib/ext http://www.cnblogs.c ...
- Python之FTP实现
Python之FTP实现 上传下载: import socket import struct import json import subprocess import os class MYTCPSe ...
- C51 中断 个人笔记
总架构图 IE寄存器 控制各个中断源的屏蔽与允许 TCON寄存器 各个中断源的请求标志位&有效信号的规定 中断源及其优先级 中断号写程序的时候要用 CPU处理中断三原则 1.CPU同时接收到几 ...
- input输入框的readonly属性-----http://www.w3school.com.cn/tags/tag_input.asp
http://www.w3school.com.cn/tags/tag_input.asp input输入框的readonly属性 查询方法: 1.先找官方的文档,api 2.官方的有看不懂的再百度相 ...
- html的href标签不能下载apk文件
解决方案: 打开Internet 服务管理器Internet 服务管理器 网站属性 HTTP头(MIME类型) 新建 扩展名:.apk 类型(MIME): application/vnd.androi ...
- [K/3Cloud] 如何设置设置单据分录中的整列的精度
有时,你可能想设置整列的精度,可以在插件中完成. 设置方法如下 : this.View.GetFieldEditor<DecimalFieldEditor>("FAmount&q ...
- msp430入门编程04
msp430中C语言的变量与数据类型 msp430入门学习 msp430入门编程
- 从零开始写STL—容器—vector
从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...
- 一个1x1px大小Data/Base64数据的gif透明图片
<img src="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNg ...
- Ubuntu 16.04下减小/释放/清理VirtualBox虚拟硬盘文件的大小
一般在VirtualBox中安装Windows,然后用无缝模式进行某些特定软件的使用. 而VirtualBox的虚拟硬盘会越用越大,并且VirtualBox没有自带清理工具,相比VMware来说,VM ...