UVA12032 题解

题意

原题面一堆废话,其实这道题很简单。

T 组数据,每组数据给定你一个长度为 n 的序列 a1...an,在定义 a00 的情况下,假设 k 为你的力量系数,在 inaiai1k,且在按顺序 1n 进行判断时,如果 aiai1=k 那么 k=k1k 会对后面造成影响。求 k 的最小值。

思路

二分 k 的值,按照题意模拟即可。

代码

#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int n,m,a[N],idx;
bool check(int x){
	for(int i=1;i<=n;i++){
		if(a[i]-a[i-1]>x) return 0;//不符合条件
		if(a[i]-a[i-1]==x) x--;//k--
	}
	return 1;
}
int main(){
    cin.tie(0)->sync_with_stdio(0);
    int T;
    cin>>T;
    while(T--){
    	cin>>n;
        for(int i=1;i<=n;i++){
        	cin>>a[i];
		}
		int l=0,r=10000000;
		while(r-l>5){
			int mid=l+r>>1;
			if(check(mid)){
				r=mid;
			}
			else{
				l=mid;
			}
		}
		int ans=1e9;
		for(int i=l;i<=r;i++){
			if(check(i)){
				ans=min(ans,i);//二分k的最小值
			}
		}
		cout<<"Case "<<++idx<<": "<<ans<<endl;//输出答案即可,注意格式
    }
}
posted @   Telsif  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示