码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces VK Cup Finals #424 Div.1 C. Bamboo Partition(数论)

时间:2017-08-27 00:11:28      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:force   art   getchar   一个   pac   ges   onclick   names   read   

  题目要求符合以下条件的最大的d

技术分享  化简得

技术分享  注意到

技术分享

  最多只有2*sqrt(a[i]-1)种取值,也就是一共最多有n*sqrt(10^19)种取值,于是枚举一下d,计算出符合上上式的最大的d更新答案,然后d跳跃到下一个取值

  效率O(n²sqrt(10^9))

技术分享
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
const int maxn=110,inf=1e9;
ll n,k,ans,r;
ll a[maxn];
void read(ll &k)
{
    int f=1;k=0;char c=getchar();
    while(c<0||c>9)c==-&&(f=-1),c=getchar();
    while(c<=9&&c>=0)k=k*10+c-0,c=getchar();
    k*=f;
}
int main()
{
    read(n);read(k);
    for(int i=1;i<=n;i++)read(a[i]),k+=a[i];
    for(ll d=1;d<=1000000000;d=r+1)
    {
        r=1ll*10000*inf;
        for(int i=1;i<=n;i++)if(a[i]>d)r=min(r,(a[i]-1)/((a[i]-1)/d));
        ll tot=0;for(int i=1;i<=n;i++)tot+=(a[i]-1)/d+1;
        ll mxd=k/tot;if(d<=mxd&&mxd<=r)ans=max(ans,mxd);
    }
    printf("%lld\n",ans);
    return 0;
}
View Code

 

Codeforces VK Cup Finals #424 Div.1 C. Bamboo Partition(数论)

标签:force   art   getchar   一个   pac   ges   onclick   names   read   

原文地址:http://www.cnblogs.com/Sakits/p/7436720.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!