原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.html

题解

T = 1 的情况直接大力从两边向中间询问即可。

T = 2 的情况挺妙的,我没想到。

  考虑首先花费 n + 1 代价得到全局最大值和最小值,也就是 a[1] 和 a[n] 。

  然后考虑将值域均分为 n - 1 段,每一段询问一下。答案一定在 相邻两段区间的 左边一段的Max 和右边一段的Min 之间 ,或者 a[1] 与 a[1] 右侧数,或者 a[n] 与 a[n] 左侧数 中产生。

  我们考虑证明这个东西:

  设每一段的长度 $d = \left \lceil \frac {a[n] - a[1]}{n-1}\right\rceil$ ,如果答案在某一段区间中,那么 $ans \leq d - 2$。然而,根据抽屉原理,总共有 $a[n] - a[1] - 1 - (n-2)$ 个空位,分成 $n-1$ 段,那么最长的一段至少长度为 $\left \lceil \frac{a[n] - a[1] - 1 - (n-2) } { n-1 } \right \rceil = d-1 > d - 2$,故答案不可能在某一段区间内。

  接下来证明一下我们的花费在 $3n$ 之内。

  1. 第一次询问花费 n + 1 。

  2. 接下来询问不超过 n - 1 次。

  3. 询问到的数字个数不超过 n - 2 。

  所以总询问次数的上线是 $3n - 2$ ,可以通过此题。

代码

#include <bits/stdc++.h>
#define For(i,a,b) for (int i=a;i<=b;i++)
#include "gap.h"
using namespace std;
typedef long long LL;
const int N=100005;
LL a[N];
LL findGap(int type,int n){
if (type==1){
int lp=1,rp=n;
LL lv=0,rv=1e18,Min,Max;
while (lp<=rp){
MinMax(lv,rv,&Min,&Max);
a[lp++]=Min;
a[rp--]=Max;
lv=Min+1,rv=Max-1;
}
LL res=0;
For(i,1,n-1)
res=max(res,a[i+1]-a[i]);
return res;
}
else {
LL lv,rv,ans=0;
MinMax(0,1e18,&lv,&rv);
LL d=(rv-lv+(n-2))/(n-1),pre=lv;
for (;lv<rv-1;lv+=d){
LL Min,Max;
MinMax(lv+1,min(lv+d,rv-1),&Min,&Max);
if (Min!=-1){
ans=max(ans,Min-pre);
pre=Max;
}
}
ans=max(ans,rv-pre);
return ans;
}
}

  

UOJ#206. 【APIO2016】Gap 构造 交互题的更多相关文章

  1. UOJ #206. 【APIO2016】Gap【交互题】

    参考:https://blog.csdn.net/clover_hxy/article/details/70767653 人生第一次交互题...不是很难但是思维和传统题差别挺大的(以及并不会本地测试= ...

  2. [APIO2016]Gap(交互)

    第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可. 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1 ...

  3. 构造水题 Codeforces Round #206 (Div. 2) A. Vasya and Digital Root

    题目传送门 /* 构造水题:对于0的多个位数的NO,对于位数太大的在后面补0,在9×k的范围内的平均的原则 */ #include <cstdio> #include <algori ...

  4. [APIO2016]Gap

    题目:UOJ#206. 题目大意:由于过于冗长,不好解释,所以详见原题. 解题思路:这是一道交互题. 对于第一问,很容易解决.由于数列严格递增,所以不会出现相等的情况. 首先调用MinMax(0,10 ...

  5. 交互题[CF1103B Game with modulo、CF1019B The hat、CF896B Ithea Plays With Chtholly]

    交互题就是程序与电脑代码的交互. 比如没有主函数的程序,而spj则给你一段主函,就变成了一个整体函数. 还有一种就是程序和spj之间有互动,这个用到fflush(stdout);这个函数就可以实现交互 ...

  6. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  7. Codeforces 1137D - Cooperative Game - [交互题+思维题]

    题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...

  8. Gym - 101375H MaratonIME gets candies 交互题

    交互题介绍:https://loj.ac/problem/6 题意:输出Q X ,读入><= 来猜数,小于50步猜出就算过样例 题解:根本不需要每次输出要打cout.flush()... ...

  9. Codeforces Round #523 (Div. 2) F. Katya and Segments Sets (交互题+思维)

    https://codeforces.com/contest/1061/problem/F 题意 假设存在一颗完全k叉树(n<=1e5),允许你进行最多(n*60)次询问,然后输出这棵树的根,每 ...

随机推荐

  1. CentOS安装glibc-2.14

    CentOS安装glibc-2.14   到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.gz wget https://ftp.gnu.org/gnu/ ...

  2. Vue学习笔记四:跑马灯效果

    目录 跑马灯原理 HTML 箭头函数 计时器 跑马灯效果 跑马灯原理 先讲讲跑马灯的原理,就是一行字,会滚动,思路是这样的,使用substring方法,一个获取字符串的第一个字,一个获取1后面所有的字 ...

  3. FPGA

    FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的 ...

  4. C#多线程处理

    创建多线程,并带参数! using System; using System.Collections; using System.Collections.Generic; using System.I ...

  5. Python django解决跨域请求的问题

    解决方案 1.安装django-cors-headers pip3 install django-cors-headers 2.配置settings.py文件 INSTALLED_APPS = [ . ...

  6. springboot-文件上传xls及POI操作Excel

    1.pom导入依赖文件 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-o ...

  7. 「HNOI 2019」白兔之舞

    一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...

  8. centos7安装mongodb3.4

    先下载安装包,OS选择RHEL 7.0 Linux 64-bit x64,package选择Server. 这里OS选6.2应该也行,没试过,如果linux版本是6.*的话注意选这个,如果选择7.0安 ...

  9. web前端效率提升之禁用缓存-遁地龙卷风

    1.使用场景 我用的是Chrome,Ctrl+F5并不是在任何时候都能清楚缓存,这样很影响效率,下面的方式可以在开发者工具打开的使用禁止浏览器缓存任何资源, 还是出现不及时更新的情况,就要考虑服务器是 ...

  10. # 20175333曹雅坤《Java程序设计》第2周学习总结

    教材学习内容总结 1.学习第二,三章ppt,并观看视频. 2.在虚拟机中连接到码云,克隆代码,编译与运行教材上的例子. 3.在虚拟机上安装相关配置,使其满足学习要求. 4.运行并截图上传监督学习脚本s ...