B. Expansion coefficient of the array

题目链接
Let’s call an array of non-negative integers a1,a2,…,an a k-extension for some non-negative integer k if for all possible pairs of indices 1≤i,j≤n the inequality k⋅|i−j|≤min(ai,aj) is satisfied. The expansion coefficient of the array a is the maximal integer k such that the array a is a k-extension. Any array is a 0-expansion, so the expansion coefficient always exists.

You are given an array of non-negative integers a1,a2,…,an. Find its expansion coefficient.

Input
The first line contains one positive integer n — the number of elements in the array a (2≤n≤300000). The next line contains n non-negative integers a1,a2,…,an, separated by spaces (0≤ai≤109).

Output
Print one non-negative integer — expansion coefficient of the array a1,a2,…,an.

input
4
6 4 5 5

output
1

input
3
0 1 2

output
0

input
4
821 500 479 717

output
239

Note
In the first test, the expansion coefficient of the array [6,4,5,5] is equal to 1 because |i−j|≤min(ai,aj), because all elements of the array satisfy ai≥3. On the other hand, this array isn’t a 2-extension, because 6=2⋅|1−4|≤min(a1,a4)=5 is false.

In the second test, the expansion coefficient of the array [0,1,2] is equal to 0 because this array is not a 1-extension, but it is 0-extension.

题意:给你n个数,让你找到最大的一个数K,使得K*|i - j| <= min(ai,aj) 对于任意的1 <= i,j <= n皆成立(i,j)是下标
题解:对于给定的每一个数a把它当作最小值,判断距离左右端点的最大值d,然后计算ans = a / d,遍历一遍找到最小值集合中的真正的最小值

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,m,d,ans = INT_MAX;
	scanf("%d",&n);
	for(int i = 1;i <= n;i++){
		d = max(i - 1,n - i);
		scanf("%d",&m);
		ans = min(ans,m / d);
	}
	printf("%d\n",ans);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值