zoukankan      html  css  js  c++  java
  • [洛谷P2183]巧克力

    题目大意:有n块巧克力,每块巧克力有一个大小。巧克力可以切成若干份。现在要你切成大小相等的m块,且尽可能大。求这个大小。

    解题思路:我们二分巧克力切成的大小,然后计算能切成多少块,判断即可。由于最大的巧克力大小为10000,所以时间复杂度为$O(nlog {10000})$。

    C++ Code:

    #include<cstdio>
    using namespace std;
    int n,m,a[5005];
    bool ok(int x){
    	int cnt=0;
    	for(int i=1;i<=n;++i)
    	cnt+=a[i]/x;
    	return cnt>=m;
    }
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;++i)
    	scanf("%d",&a[i]);
    	int l=1,r=10001,ans;
    	while(l<=r){
    		int mid=l+r>>1;
    		if(ok(mid)){
    			ans=mid;
    			l=mid+1;
    		}else
    		r=mid-1;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    Grandpa's Estate
    The Fortified Forest
    Scrambled Polygon
    Wall
    激情的大三
    无聊的大二
    美好的大一
    高精度 加减乘
    Erasing Edges
    git放弃修改&放弃增加文件
  • 原文地址:https://www.cnblogs.com/Mrsrz/p/7367481.html
Copyright © 2011-2022 走看看