zoukankan      html  css  js  c++  java
  • Codeforce -Mafia

    题意:有n个同学做游戏(Mafia),在一轮游戏中有一名同学不会参加(当监护人),给出

    每名同学想要参与的次数,求最少要进行的游戏的轮数,保证每名同学都能达到自己想要参与的次数

    题解:设想要参与的最多的游戏次数为maxx,则ans一定大于或等于maxx,

    对maxx-a[i]求和res,当数值res>=maxx是满足,如果maxx++的话会TLE,所以二分maxx

     1 # include <cstdio>
     2 # include <iostream>
     3 # include <cstring>
     4 # include <algorithm>
     5 using namespace std;
     6 
     7 typedef long long LL;
     8 const int maxn=1e5+5,INF=0x7fffffff;
     9 LL a[maxn];
    10 int n;
    11 LL maxx;
    12 
    13 bool C(LL x){
    14     LL sum=0;
    15     for(int i=1;i<=n;i++)
    16         sum+=(x-a[i]);
    17     return sum>=x;
    18 }
    19 
    20 int main(){
    21     while(scanf("%d",&n)!=EOF){
    22         maxx=0;
    23         for(int i=1;i<=n;i++) {
    24             scanf("%I64d",&a[i]);
    25             maxx=max(maxx,a[i]);
    26         }
    27         LL ls=maxx-1,rs=INF;
    28         while(rs-ls>1){
    29             LL mid=(ls+rs)/2;
    30             //cout<<mid<<endl;
    31             if(C(mid)) rs=mid;
    32             else ls=mid;
    33         }
    34         printf("%I64d
    ",rs);
    35     }
    36     return 0;
    37 }
    View Code
  • 相关阅读:
    mysql max(),min()的优化
    统计网站某天的点击数
    小程序网络图片下载
    小程序封装
    小程序 封装调用
    小程序request封装
    git 使用
    MYSQL查询语句优化
    微信开发遇到的坑
    PHP支付宝支付开发流程
  • 原文地址:https://www.cnblogs.com/lintanxi/p/7135930.html
Copyright © 2011-2022 走看看