[APIO2016]Gap
题目:UOJ#206。
题目大意:由于过于冗长,不好解释,所以详见原题。
解题思路:这是一道交互题。
对于第一问,很容易解决。由于数列严格递增,所以不会出现相等的情况。
首先调用MinMax(0,10^18,&l,&r)求出最小值和最大值,然后每次调用MinMax(l+1,r-1,&l,&r)求出次大值、次小值,第三大值、第三小值……
如此调用$\lfloor \frac{N+1}{2}\rfloor$次,就可以求出整个数组。然后求值即可。
对于第二问,首先仍然是求出最小值min和最大值max。
然后,可以知道[min,max]之间还有N-2个数,那么中间就被分为了N-1份。
根据抽屉原理可知,两数之间的最大间隔至少为$\lceil \frac{a_N - a_1}{N-1}\rceil$,设其为p。
那么我们就将查找区间分为N-1份,每次查找的区间大小都为p(最后一个区间除外),然后每次用当前查询到的最小值减去上次查询到的最大值(跳过-1),得出的答案进行比较,最大的那个就是答案。
由于最大间隔至少为p,所以最大间隔一定在两个不同区间中,因此这样做能得到正确的答案。
m的值:第一次调用N+1,之后N-1次调用,总共包含不超过N个点,所以$m\leq N+1+N+N-1$,即$m\leq 3N$,符合条件。
然后即可AC。
C++ Code:
- #include"gap.h"
- #define ll long long
- ll p[100005];
- ll findGap(int T,int N){
- if(T==1){
- int l=1,r=N;
- ll LL=0,RR=1000000000000000000;
- while(l<=r){
- ll xx,yy;
- MinMax(LL,RR,&xx,&yy);
- p[l++]=xx,p[r--]=yy;
- LL=xx+1,RR=yy-1;
- }
- ll max=0;
- for(int i=1;i<N;++i)
- if(p[i+1]-p[i]>max)max=p[i+1]-p[i];
- return max;
- }else{
- ll xx,yy;
- MinMax(0,1000000000000000000,&xx,&yy);
- ll k=(yy-xx)/(N-1);
- if((yy-xx)%(N-1))++k;
- ll prer=xx,max=0,nowl,nowr;
- for(ll l=xx+1;l<yy;l+=k){
- ll r=l+k-1;
- if(r>yy)r=yy-1;
- MinMax(l,r,&nowl,&nowr);
- if(nowl-prer>max)max=nowl-prer;
- if(nowr!=-1)
- prer=nowr;
- }
- if(yy-prer>max)max=yy-prer;
- return max;
- }
- }
[APIO2016]Gap的更多相关文章
- [APIO2016]Gap(交互)
第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可. 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1 ...
- UOJ #206. 【APIO2016】Gap
Description Solution 第一个子任务,直接从 \((a[i],a[j])\) 推出 \((a[i+1],a[j-1])\) 就行了,只需要 \(\frac{N+1}{2}\) 第二个 ...
- UOJ#206. 【APIO2016】Gap 构造 交互题
原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.html 题解 T = 1 的情况直接大力从两边向中间询问即可. T = 2 的情况挺妙的,我没想到. 考虑首先花费 ...
- UOJ#206. 【APIO2016】Gap(交互,乱搞)
描述 提交 自定义测试 有 NN 个严格递增的非负整数 a1,a2,…,aNa1,a2,…,aN(0≤a1<a2<⋯<aN≤10180≤a1<a2<⋯<aN≤101 ...
- 【APIO2016】Gap
题目描述 有 $N$ 个严格递增的非负整数 $a_1, a_2, \dots, a_N$($0 \leq a_1 < a_2 < \cdots < a_N \leq 10^{18}$ ...
- UOJ #206. 【APIO2016】Gap【交互题】
参考:https://blog.csdn.net/clover_hxy/article/details/70767653 人生第一次交互题...不是很难但是思维和传统题差别挺大的(以及并不会本地测试= ...
- DG gap sequence修复一例
环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Wa ...
- 16 On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima 1609.04836v1
Nitish Shirish Keskar, Dheevatsa Mudigere, Jorge Nocedal, Mikhail Smelyanskiy, Ping Tak Peter Tang N ...
- 利用增量备份恢复因归档丢失造成的DG gap
故障现象:data guard归档出现gap,悲剧的是丢失的归档在主库上被rman备份时删除了,丢失的归档大约有20几个,数据库大小约2T,如果重建DG将非常耗时间,因此决定利用增量备份的方式恢复DG ...
随机推荐
- Unity中 Animator 与Animation 区别
①Animation和Animator 虽然都是控制动画的播放,但是它们的用法和相关语法都是大有不同的.Animation 控制一个动画的播放,而Animator是多个动画之间相互切换,并且Anima ...
- ABBYY FineReader双十一优惠享不停,战绩如何?
随着双十一的火热来袭,购物达人也是不吝啬囊中票子,各种姿势剁手齐全,立誓过后吃土半月,双十一的好与不好?自己也是门清,反正真真的是促进消费了! 就ABBYYFineReader而言,此次的双十一力度就 ...
- CSS Grid(CSS网格)
Grid被设计来做一些Flexbox不能做的事情,所以不是被设计来取代Flexbox的. flexbox 一维的 Grid 二维的 总结: Grid Items作用在Grid Container的直 ...
- 数组的filter用法
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素. 语法:var new_array = arr.filter(callback(element[, index[, a ...
- code-reading-notes--libyang-1
API struct lyd_node * lyd_parse_xml(struct ly_ctx *ctx, struct lyxml_elem **root, int options, ...) ...
- Django Rest Framework 简介及 初步使用
使用Django Rest Framework之前我们要先知道,它是什么,能干什么用? Django Rest Framework 是一个强大且灵活的工具包,用以构建Web API 为什么要使用Res ...
- 11g,12c Oracle Rac安装
安装 Oracle 12cR1 RAC on Linux 7 本文介绍如何在Oracle Linux 7上安装2节点Oracle 12cR1 Real Application Cluster(RAC) ...
- ThinkPHP 跨模块调用操作方法(A方法与R方法)
ThinkPHP 跨模块调用操作方法(A方法与R方法) 跨模块调用操作方法 前面说了可以使用 $this 来调用当前模块内的方法,但实际情况中还经常会在当前模块调用其他模块的方法.ThinkPHP 内 ...
- 【codeforces 812A】Sagheer and Crossroads
[题目链接]:http://codeforces.com/contest/812/problem/A [题意] 有一个小箭头指的那个地方; 指的就是人行道路; 然后p[i]指的就是那4个人行道是不是绿 ...
- PatentTips – Java native function calling
BACKGROUND OF INVENTION This invention relates to a system and method for providing a native functio ...