588 div2 B. Expansion coefficient of the array

Posted bxd123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了588 div2 B. Expansion coefficient of the array相关的知识,希望对你有一定的参考价值。

题意: 

给出一个 非负串   求最大k值 使得k对任意i j 满足 k|ij|min(ai,aj)  

 

显然k<= min(ai,aj)/|i-j|

一开始做的时候  选了一个最大值   然后遍历数列  显然最大值和其他任意值相比min都是其他值   然后更新答案   但是正确性显然有问题。。。 因为这个wa了3次 

 

然后发现应该和最左端和最右端相比较 更新答案  

ac:

技术图片
#include<bits/stdc++.h>
using namespace std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m)
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//////////////////////////////////
#define inf 0x3f3f3f3f
#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1
const int N=400000+5;
int a[N];
struct node
{
    int v,pos;
}s[N];
bool cmp(node a,node b)
{
    return a.v<b.v;
}
int main()
{
    int n;RI(n);
    int ans=1e9+5;
    rep(i,1,n)
    {
        RI(s[i].v);s[i].pos=i;
    }
    sort(s+1,s+1+n,cmp);
    rep(i,1,n)
    {
        if(s[i].pos!=1)
        ans=min(ans,s[i].v/(s[i].pos-1) );
        if(s[i].pos!=n)
        ans=min(ans,s[i].v/(n-s[i].pos));

    }
    cout<<ans;


    return 0;
}
View Code

 

官方题解:

其实根本不需要排序什么的  

直接比就行了

技术图片
#include <bits/stdc++.h>

using namespace std;

const int M = 1e5;

int n, a, m = 1e9;

int main()
{
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a;
        m = min(m, a / max(i, n - 1 - i));
    }
    cout << m;
    return 0;
}
View Code

 

以上是关于588 div2 B. Expansion coefficient of the array的主要内容,如果未能解决你的问题,请参考以下文章

B. Ania and Minimizing (Codeforces Round #588 (Div. 2) )

CF #727(div2)B. Love Song,前缀和

#282(div2) B. Modular Equations

CodeForces #362 div2 B. Barnicle

#421(div2)B. Mister B and Angle in Polygon

CF #724(div2)B. Prinzessin der Verurteilung, BFS枚举