[APIO 2016]Gap
Description
给你一个长度为 \(N\) 的单调递增序列 \(A\) 。交互时允许你调用 MinMax(s, t, &mn, &mx) 函数,表示序列元素的值在 \([s,t]\) 范围内最小为 mn ,最大为 mx 。求
\[\max_{1\leq i< n}A_{i+1}-A_i\]
\(1\leq n\leq 100000,0\leq a_i \leq 10^{18}\)
Solution
对于第一个子任务,由于单调递增的性质,显然我们可以用双指针从两端扫一遍。每次将查询范围缩小,查询次数是 \(\left\lceil\frac{N}{2}\right\rceil\) 的。
对于第二个子任务,由于每一次查询的代价是数的个数 \(+1\) ,比较容易想到的就是每个数只能被查询一次。实质上我们每次查询只在乎差值,而不在乎数值具体是多少,所以我们可以将答案作为间隔去查询,可能这个间隔内有很多数,但都不影响,因为其中间隔肯定小于答案,我们在乎的只是这次查询的最小值和上次有效查询的最大值的差值,是否能更新答案。
Code
#include "gap.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 100000+5;
const long long inf = 1ll*1000000000*1000000000;
long long a[N];
long long findGap(int T, int N)
{
if (T == 1) {
long long mn = 0-1, mx = inf+1;
for (int l = 1, r = N; l <= r; l++, r--) {
MinMax(mn+1, mx-1, &mn, &mx);
a[l] = mn, a[r] = mx;
}
long long ans = 0;
for (int i = 1; i < N; i++) ans = max(ans, a[i+1]-a[i]);
return ans;
}else {
long long mn, mx, pre = -1, ans, now, lim;
MinMax(0, inf, &mn, &mx); lim = mx, now = mn, ans = (mx-mn+N-2)/(N-1);
while (now <= lim) {
MinMax(now, now+ans, &mn, &mx);
now = now+ans+1;
if (pre != -1 && mn != -1) ans = max(ans, mn-pre);
if (mx != -1) pre = mx;
}
return ans;
}
}
[APIO 2016]Gap的更多相关文章
- 【UOJ #206】【APIO 2016】Gap
http://uoj.ac/problem/206 对于T=1,直接从两端往中间跳可以遍历所有的点. 对于T=2,先求出最小值a和最大值b,由鸽巢原理,答案一定不小于\(\frac{b-a}{N-1} ...
- GDOI 2016 & APIO 2016 游记
缓慢施工中...... UPD:APIO游记已烂尾......因为Cu滚粗+生病一直没心情写..过了几天就发现APIO的事都快忘光了...去看KPM的就可以啦 今年apio竟然没和gdoi撞...智障 ...
- APIO 2016
我好菜啊都不会 T1.boats 题目大意:给你N段区间,按顺序决定每段区间可以选一个数或不选,若选则选的这个数必须大于所有在这之前选的数,求有多少种方案.(N<=500,区间在[1,1e9]范 ...
- 【UOJ #205】【APIO 2016】Fireworks
http://uoj.ac/problem/205 好神的题啊. dp[i][j]表示以i为根的子树调整成长度j需要的最小代价. 首先要观察到dp值是一个下凸壳. 因为从儿子合并到父亲时要把所有儿子的 ...
- 【UOJ #204】【APIO 2016】Boat
http://uoj.ac/problem/204 肯定要离散化的,先离散化出\(O(n)\)个取值区间. 设\(f(i,j)\)表示第\(i\)所学校派出的划艇数量在\(j\)区间中. \(f(i, ...
- Solution -「APIO 2016」「洛谷 P3643」划艇
\(\mathcal{Description}\) Link & 双倍经验. 给定 \(n\) 个区间 \([a_i,b_i)\)(注意原题是闭区间,这里只为方便后文描述),求 \(\ ...
- Generative Adversarial Nets[content]
0. Introduction 基于纳什平衡,零和游戏,最大最小策略等角度来作为GAN的引言 1. GAN GAN开山之作 图1.1 GAN的判别器和生成器的结构图及loss 2. Condition ...
- Solution -「ARC 104E」Random LIS
\(\mathcal{Description}\) Link. 给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...
- DG gap sequence修复一例
环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Wa ...
随机推荐
- (译文)学习ES6非常棒的特性——Async / Await函数
try/catch 在使用Async/Await前,我们可能这样写: const main = (paramsA, paramsB, paramsC, done) => { funcA(para ...
- (译文)开始学习Vue.js特性--Scoped Slots
什么是scoped slots A scoped slot is a special type of slot that functions as a reusable template (that ...
- 『转载』从内存资源中加载C++程序集:CMemLoadDll
MemLoadDll.h #if !defined(Q_OS_LINUX) #pragma once typedef BOOL (__stdcall *ProcDllMain)(HINSTANCE, ...
- $translate 的用法
translate 的用法 1.在html页面:文本的翻译 <h1 translate>hello world</h1> <h1 translate = 'hello w ...
- pip安装selenium报错:Read timed out
今天打算把selenium降级重新安装,发现安装时总是失败,报如下错误: raise ReadTimeoutError(self._pool, None, 'Read timed out.') pip ...
- Linux学习--线程控制
关于线程控制,主要就是几个模块,我们一个一个消灭.消化: 一.线程创建: 1.先来看看在Linux环境下的线程创建函数: 分析:意思很明显: 1.函数名是 pthread_create : 2.功能 ...
- django restful 1-在线Python编辑器
客户端(浏览器)----> 前端页面-----> 后端处理数据,并把数据以 json 形式发送到前端 online_app.py from django.conf import setti ...
- 常用的 html 标签及注意事项
<a> 标签 用法:用于定义超链接 清除浏览器默认样式: a { text-decoration: none;/* 去除下划线 */ color: #333;/* 改变链接颜色 */ } ...
- 数据恢复案例分享:MSSQL 2000 错误823
一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析SQL Server数据库 823 ...
- JavaScript简写技巧总结
在日常工作中,JavaScript一些常用的简写技巧,将直接影响到我们的开发效率,现将常用技巧整理如下: 1. 空(null, undefined)验证 当我们创建了一个新的变量,我们通常会去 ...