子任务$1$:直接找到最大值后从两边开始找,一步一步从左右到中间确定所有数,调用次数是$\left\lceil\dfrac n2\right\rceil$

子任务$2$:先找到最大值$mx$和最小值$mn$,代价为$N+1$,令$L=\left\lceil\dfrac{mx-mn}{N-1}\right\rceil$,那么答案$\geq L$

我们把整个序列按权值分成许多大小为$L$的块,那么答案一定跨块,所以直接对每块调用然后用上次的最大值和这次的最小值更新答案即可,最多调用$N-1$次,总共包含$N$个数,所以总代价$\leq3N$,刚好满足题目的要求

  1. #include<stdio.h>
  2. #include"gap.h"
  3. typedef long long ll;
  4. const ll inf=1e18;
  5. ll a[100010];
  6. ll max(ll a,ll b){return a>b?a:b;}
  7. ll min(ll a,ll b){return a<b?a:b;}
  8. ll up(ll a,ll b){return a%b!=0?a/b+1:a/b;}
  9. ll findGap(int T,int N){
  10. if(T==1){
  11. int i;
  12. ll ans;
  13. a[0]=-1;
  14. a[N+1]=inf+1;
  15. for(i=1;i<=(N+1)>>1;i++)MinMax(a[i-1]+1,a[N-i+2]-1,a+i,a+N-i+1);
  16. ans=0;
  17. for(i=1;i<N;i++)ans=max(ans,a[i+1]-a[i]);
  18. return ans;
  19. }else{
  20. ll i,mn,mx,t1,t2,las,L,ans;
  21. MinMax(0,inf,&mn,&mx);
  22. L=up(mx-mn,N-1);
  23. las=-1;
  24. ans=L;
  25. for(i=mn;i<=mx;i+=L+1){
  26. MinMax(i,min(i+L,mx),&t1,&t2);
  27. if(las!=-1)ans=max(ans,t1-las);
  28. if(t2!=-1)las=t2;
  29. }
  30. return ans;
  31. }
  32. }

[UOJ206]Gap的更多相关文章

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

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ206.html 题解 T = 1 的情况直接大力从两边向中间询问即可. T = 2 的情况挺妙的,我没想到. 考虑首先花费 ...

  2. DG gap sequence修复一例

    环境:Oracle 11.2.0.4 DG 故障现象: 客户在备库告警日志中发现GAP sequence提示信息: Mon Nov 21 09:53:29 2016 Media Recovery Wa ...

  3. 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 ...

  4. 利用增量备份恢复因归档丢失造成的DG gap

    故障现象:data guard归档出现gap,悲剧的是丢失的归档在主库上被rman备份时删除了,丢失的归档大约有20几个,数据库大小约2T,如果重建DG将非常耗时间,因此决定利用增量备份的方式恢复DG ...

  5. (一)GATT Profile和GAP 简介(目前所有的BLE应用都基于GATT,所以也要了解是怎么一回事)-转发

    个人大总结:(先后顺序) 1.GAP协议定义多个角色(其中就有中心设备[GATT客户端](唯一)叫主设备||和外围设备[GATT服务端端](多个)也叫从设备). 2.先经过GAP协议,再有GATT协议 ...

  6. hdu.1067.Gap(bfs+hash)

    Gap Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  7. 【leetcode】Maximum Gap

    Maximum Gap Given an unsorted array, find the maximum difference between the successive elements in ...

  8. 【leetcode】Maximum Gap(hard)★

    Given an unsorted array, find the maximum difference between the successive elements in its sorted f ...

  9. Datagard產生gap

    本文轉載自無雙的小寶的博客:http://www.cnblogs.com/sopost/archive/2010/09/11/2190085.html 有時候因為網路或備份故障等原因,主機所產生的歸檔 ...

随机推荐

  1. vector 搜索

    http://classfoo.com/ccby/article/cIBahI #include <iostream> #include <algorithm> #includ ...

  2. Codeforces Round #535 (Div. 3) 题解

    Codeforces Round #535 (Div. 3) 题目总链接:https://codeforces.com/contest/1108 太懒了啊~好久之前的我现在才更新,赶紧补上吧,不能漏掉 ...

  3. 解决perm size out of memeory的问题

    在idea中配置如下即可 -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m 如下图所示:

  4. jsonArray与jsonObject

    最近两个星期接触最多的就是json和map了. 之前用到的json,就是一个键对应一个值,超级简单的一对一关系.现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个 ...

  5. 函数实现多个按钮控制一个div

    <!DOCTYPE HTML><html><head> <meta http-equiv="txttent-Type" txttent=& ...

  6. sublime JSX Html 标签补全

    Preferences -> Package Settings -> Emmet ->key bindings – user { "keys": ["t ...

  7. java迭代map

    java迭代map: import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.ut ...

  8. [Codevs1519]过路费解题报告|最小生成树|LCA

    在某个遥远的国家里,有 n个城市.编号为 1,2,3,…,n.这个国家的政府修建了m 条双向道路,每条道路连接着两个城市.政府规定从城市 S 到城市T需要收取的过路费为所经过城市之间道路长度的最大值. ...

  9. SQLSERVER数据库置疑、可疑、脱机、单用户、紧急模式等的修复

    数据库出现置疑.可疑.脱机.单用户.紧急模式主要是因为数据库的日志文件除了问题,2000和2008修复方式不一样,2008的修复脚本在2000中不适用,主要是不被2000识别. 假设数据库名为:eis ...

  10. LCD实验学习笔记(四):系统时钟

    一般CPU频率(FCLK)高于内存.网卡等设备频率(HCLK),而串口.USB.I2C等设备频率(PCLK)更低. 系统时钟: 系统时钟源为晶振,初始频率12MHz. 通过设置MPLLCON寄存器的M ...