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

codeforces #202(div2) C

时间:2017-03-18 18:11:16      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:sed   isp   com   ted   codeforce   ini   display   计算   turn   

题意:一个party共n个人,要玩一个游戏,这个游戏每轮需要一个裁判,剩下的人参与,第i个人想要在不当裁判的情况下玩ai轮,求在满足所有人愿望的时候,最少玩的轮数

分析:最少的轮数肯定是个人最大轮数+1,如果轮数确定,那么轮数-ai就是该玩家在满足自身的情况下当裁判的最大次数,如果所有人能当裁判的轮数>=要玩的轮数,那么就是一个答案

只要找到最小的那个就好了,先找到最大的ai,然后把ai+1当作最小的轮数,计算裁判的次数,如果每再增加一轮游戏,能当裁判的次数要+n,

从ai+1枚举轮数,或者二分轮数,判断所有人能当裁判的总轮数>=要玩的轮数就可以了

 

我用的二分法

技术分享
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int n,d[maxn];
typedef long long ll; 
ll tmp=0,l=0,r=1e13,res,L;

inline bool solve(ll m){
    ll t=tmp+(m-L)*n;
    return t>=m;
}

int main(){
    
    cin>>n;
    for(int i=0;i<n;i++)cin>>d[i],l=max(l,(ll)d[i]);
    L=l;
    for(int i=0;i<n;i++)tmp+=l-d[i];
    
    while(l<=r){
        ll mid=l+(r-l)/2;
        if(solve(mid))res=mid,r=mid-1;
        else l=mid+1;
    }
    
    cout<<res<<endl;
    return 0;
}
View Code

 

codeforces #202(div2) C

标签:sed   isp   com   ted   codeforce   ini   display   计算   turn   

原文地址:http://www.cnblogs.com/jihe/p/6574703.html

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