题意是说给你一串数组,其中-1代表未知,求相邻两个数之差的绝对值最小,-1可以由k赋值,先考虑-1的情况,把k解出来,转换一下,就是绝对值之差最小情况,|k-a|,|k-b|,|k-c|,要使最大的最小,也就是在两个端点找,|k-min|,|k-max|,由数形结合可知,当k为min与max的中点时最小,由此算出k再扫一遍数组即可

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ((x)&(-x))
typedef long long LL; const int maxm = 1e5+;
const int INF = 0x3f3f3f3f; int buf[maxm], n; void run_case() {
cin >> n;
int Max = -, Min = INF;
for(int i = ; i < n; ++i) cin >> buf[i];
for(int i = ; i < n; ++i) {
if(buf[i] == -) {
if(i > && buf[i-] != -) Min = min(Min, buf[i-]), Max = max(Max, buf[i-]);
if(i < n- && buf[i+] != -) Min = min(Min, buf[i+]), Max = max(Max, buf[i+]);
}
}
int mid = (Max+Min)>>, ans = ;
for(int i = ; i < n-; ++i) {
int a = buf[i], b = buf[i+];
if(a == -) a = mid;
if(b == -) b = mid;
ans = max(ans, abs(a-b));
}
cout << ans << " " << mid << "\n";
} int main() {
ios::sync_with_stdio(false), cin.tie();
//cout.setf(ios_base::showpoint);cout.precision(10);
int t; cin >> t;
while(t--)
run_case();
cout.flush();
return ;
}

最新文章

  1. 08. Web大前端时代之:HTML5+CSS3入门系列~H5 Web存储
  2. 国内app快速生成平台对比
  3. google你懂得
  4. Mac 下如何使用 Tree 命令
  5. 数据存储--沙盒sandBox
  6. Python的缩进
  7. sql 2000以及2005以上获取数据库中所有的表(不包括系统表)
  8. Undefined symbols for architectureIOS
  9. 关于时区的时间的详解,比如UTC\GMT等
  10. YII2.0上传文件
  11. Android中配置JDK和SDK的环境变量
  12. qt qml中PropertyAnimation的几种使用方法
  13. Android Stuido怎样查看快捷键冲突?
  14. oracle 用系统用户以SYSDBA身份登陆
  15. Sublime Text3使用汇总
  16. 安卓Html标签,创意工具类
  17. js 控制 class 类名(classList) 和 自定义属性(dataset)
  18. java虚拟内存设置 防止内存溢出 OutOfMemory【转】【原】
  19. 用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu16.04图文教程
  20. [RTC]系统和RTC的时间保持一致

热门文章

  1. [转]Ethereum-智能合约最佳实践
  2. Linux上FTP部署:基于mariadb管理虚拟用户
  3. C语言:将ss所指字符串中所有下标为奇数位置的字母转换为大写-将该字符串中的所有字符按ASCII码值升序排序后输出。-将a所指的4*3矩阵第k行的元素与第0行元素交换。
  4. php 算false的情况
  5. Java常用API——Arrays工具类
  6. numpy.bincount正确理解
  7. web渗透(转)
  8. 《梳理业务的三个难点》---创业学习---训练营第二课---HHR---
  9. Spring Boot Mybatis 使用教程
  10. Cisco Spectrum Expert(Wave2 AP)