B. Expansion coefficient of the array
自己写的时候没想出来,记录一下思路
题意:
先给个n
然后给n个数的数组
找到一个k使得k<=min(a[i],a[j])/|i-j|
i和j是两个下标(1-n)
输出k的最大值
分析:
根据k<=min(a[i],a[j])/|i-j| 可知k的最大值等于右边min(a[i],a[j]) / |i-j| 的最小值
易知分母应该尽量大
由min(a[i],a[j])可知a[i] a[j]中大的值是无效的,假设a[i]<a[j],则a[i]是分子,
因为分母需要尽量大,所以j取数组的两端1或者n,则分母为max(i-1,n-i)
把输入的每一个a[i]当作小值求a[i]/max(i-1,n-i)并且更新答案
#include<iostream>
#include<cstdio>
typedef long long ll;
const int inf=0x3f3f3f3f;
const int inn=0x80808080;
using namespace std;
int main(){
int n;
cin>>n;
int ans=inf;
for(int i=1;i<=n;i++){
int t;
cin>>t;
ans=min(ans,t/max(i-1,n-i));
}
cout<<ans<<endl;
return 0;
}