Codeforces1301B. Motarack's Birthday
2024-09-03 02:21:32
题意是说给你一串数组,其中-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 ;
}
最新文章
- 08. Web大前端时代之:HTML5+CSS3入门系列~H5 Web存储
- 国内app快速生成平台对比
- google你懂得
- Mac 下如何使用 Tree 命令
- 数据存储--沙盒sandBox
- Python的缩进
- sql 2000以及2005以上获取数据库中所有的表(不包括系统表)
- Undefined symbols for architectureIOS
- 关于时区的时间的详解,比如UTC\GMT等
- YII2.0上传文件
- Android中配置JDK和SDK的环境变量
- qt qml中PropertyAnimation的几种使用方法
- Android Stuido怎样查看快捷键冲突?
- oracle 用系统用户以SYSDBA身份登陆
- Sublime Text3使用汇总
- 安卓Html标签,创意工具类
- js 控制 class 类名(classList) 和 自定义属性(dataset)
- java虚拟内存设置 防止内存溢出 OutOfMemory【转】【原】
- 用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu16.04图文教程
- [RTC]系统和RTC的时间保持一致
热门文章
- [转]Ethereum-智能合约最佳实践
- Linux上FTP部署:基于mariadb管理虚拟用户
- C语言:将ss所指字符串中所有下标为奇数位置的字母转换为大写-将该字符串中的所有字符按ASCII码值升序排序后输出。-将a所指的4*3矩阵第k行的元素与第0行元素交换。
- php 算false的情况
- Java常用API——Arrays工具类
- numpy.bincount正确理解
- web渗透(转)
- 《梳理业务的三个难点》---创业学习---训练营第二课---HHR---
- Spring Boot Mybatis 使用教程
- Cisco Spectrum Expert(Wave2 AP)