[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 ...
随机推荐
- CSS2Properties doesn't have an indexed property setter for '0'
使用React时,发现chrome浏览器没事,firefox火狐浏览器报了一个CSS2Properties doesn't have an indexed property setter for '0 ...
- 课堂作业 泛型类-Bag
自定义泛型类Bag 一.具体代码: 代码连接 二.伪代码: 1.思路: 老师讲完后我的想法是要做出一个类似于List的Bag,首先它的本身是又数组构成的并且是可自动增加长度的,然后实现一些基本的操作, ...
- 20162302 实验四《Android程序设计》实验报告
实 验 报 告 课程:程序设计与数据结构 姓名:杨京典 班级:1623 学号:20162302 实验名称:Android程序设计 实验器材:装有Android Studio的联想拯救者80RQ 实验目 ...
- Environment.getExternalStorageDirectory()
Environment.getExternalStorageDirectory()得到的是storage/emulated/0
- nyoj 孪生素数
孪生素数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 写一个程序,找出给出素数范围内的所有孪生素数的组数.一般来说,孪生素数就是指两个素数距离为2,近的不能再 ...
- LR之error(一)
1 录制时频繁卡死的解决方案 添加数据保护 路径:计算机--高级系统设置(环境变量设置的上级窗口)--高级--设置--数据执行保护 更改LR录制设置,将run-time setting的brower改 ...
- 不允许用(a+b)/2这种方式求两个数的均值;如下程序在Linux和32位集成开发环境中运行
#define MAX(a,b) ((a)>(b)?(a):(b)) #include<stdio.h> int main() { int a = 10; int b = 20; i ...
- Java KeyTool command
Create a new key: keytool -genkey -alias keyAlias -keyalg RSA -validity 1000 -keystore d:\keyPath\k ...
- Web Uploader初始化隐藏容器失败及点击上传图片时反应较慢的问题
问题1:在一个页面集成一个或者多个文件上传插件,初始化时有些DOM容器是隐藏的,这时候经常会出现初始化失败的情况,虽然按钮样式改变了,但是点击就是没反应(有时候不经意点了哪个地方,或许会出现文件选择框 ...
- GIT入门笔记(15)- 链接到私有GitLab仓库
GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...