Defuse the Bombs Gym - 102822D

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Defuse the Bombs Gym - 102822D相关的知识,希望对你有一定的参考价值。

Defuse the Bombs Gym - 102822D

题目:

给你n个数,现在每轮会有三个操作:
1.选择一个数,使他加一
2.所有数减一
3.当有一个数变成负数时结束操作,否则回到第一步
问最多能进行几次第一步?

题解:

题目相当于在问最多能进行几轮,
这个题不大好想,我们可以转换下思路,题目说的是先选一个数加1,然后其他数减一,然后问最多能加几轮,那我们可不可以这么想,我们先将所有数减,最后再加,看是否所有数都大于等于0。我们设最多加了x轮,那么所有数都要减x,然后我们看所有比0小的数,他们与0的差的绝对值的和是多少,因为我们要用x去补,如果x大于等于和,说明当前x轮可以完成,这个x可以用二分去寻找
是否符合单调性呢?题目是符合的,

代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 0x3f3f3f3f
const int maxn=2e5+9;
ll a[maxn];
int n;
bool check(ll x){
	ll sum=0;
	for(int i=1;i<=n;i++){
		if(a[i]<x)sum+=(x-a[i]);
	}
	if(sum<=x)return 1;
	return 0;
}
int main(){
	int t;
	cin>>t;
	int cas=0;
	while(t--){
		
		cin>>n;
		for(int i=1;i<=n;i++)cin>>a[i];
		ll l=1,r=2e10;
		while(l<r){
			ll mid=l+r>>1;
			if(check(mid))l=mid+1;
			else r=mid;
		}
		printf("Case #%d: %d\\n",++cas,r);
	}
	return 0;
}

以上是关于Defuse the Bombs Gym - 102822D的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode --- 1652. Defuse the Bomb 解题报告

LeetCode --- 1652. Defuse the Bomb 解题报告

解决使用Monitor出现gym.error.DependencyNotInstalled: Found neither the ffmpeg nor avconv executables的问题

解决使用Monitor出现gym.error.DependencyNotInstalled: Found neither the ffmpeg nor avconv executables的问题

解决使用Monitor出现gym.error.DependencyNotInstalled: Found neither the ffmpeg nor avconv executables的问题(代码

Gym 100917M Matrix, The(状压dp)