[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 ...
随机推荐
- linux小白成长之路9————打包部署SpringBoot项目
[内容指引] SpringBoot项目介绍: 打包SpringBoot项目: 1.pom.xml: 2.application.properties配置: 3.application-dev.prop ...
- 用js来实现那些数据结构(数组篇01)
在开始正式的内容之前,不得不说说js中的数据类型和数据结构,以及一些比较容易让人混淆的概念.那么为什么要从数组说起?数组在js中是最常见的内存数据结构,数组数据结构在js中拥有很多的方法,很多初学者记 ...
- C语言--嵌套循环
一.PTA实验作业 题目1 水果价格 1.本题PTA提交列表 2.设计思路 第一步:定义变量number,表示输入的编号 第二步:定义变量i,用来记录编号数目 第三步:输出菜单:[1] apple [ ...
- 最短路算法模板SPFA、disjkstra、Floyd
朴素SPFA(链表建边) #include <iostream> #include <cstdio> #include <cstring> #include < ...
- ThinkPad安装deepin操作系统报错解决方法
目前deepin操作系统,软件也比较多,所以想在自己的thinkpad t430笔记本上安装.但是安装时报错,具体错误忘了看了.反复试了好几次都不行,最后在网上查了,讲bios设置调整之后可以正常安装 ...
- Linux环境下发布.net core
一.安装Linux环境 1. 安装VM虚拟机和操作系统 VM虚拟工具安装的过程详见:http://blog.csdn.net/stpeace/article/details/78598333.直接按照 ...
- JS 实现MVC的写法
案例:当select 下拉选择框值变化时,显示其值(不是文本) 常规写法 <h3>JavaScript no MVC</h3> <div> <selec ...
- 新概念英语(1-15)Your passports please
Is there a problem wtih the Customers officer? A:Are you Swedish? B:No. We are not. We are Danish. A ...
- Spring Security 入门(1-5)Spring Security - 匿名认证
匿名认证 对于匿名访问的用户,Spring Security 支持为其建立一个匿名的 AnonymousAuthenticationToken 存放在 SecurityContextHolder 中, ...
- C#程序编写规范
代码书写规则 1.尽量使用接口,然后使用类实现接口,提高程序的灵活性. 2.一行不要超过80个字符. 3.尽量不要手工更改计算机生成的代码,若必须要改,一定要改为和计算机生成的代码风格一样. 4.关键 ...