首页 > 其他分享 >洛谷 P2440木材加工 题解

洛谷 P2440木材加工 题解

时间:2023-01-25 10:13:27浏览次数:47  
标签:洛谷 int 题解 木材 long P2440

这是一道二分答案算法题,洛谷标签中的贪心等完全用不到。


这道题的数据范围较大,所以保险起见,整型的数据我们都开成longlong

题意很好理解,这里就不做过多的分析了,直接看代码,后面有注释:

#include<bits/stdc++.h>
using namespace std;
long long n,k,l,a[1000010],maxn,ans;
bool wood(long long  x){
    long long cnt=0;
    for(int i=1;i<=n;i++){
        cnt+=a[i]/x;
        //看看每根木材按照设定长度可以截几段 
    }
    return cnt>=k;//判断此时设定的长度能否符合要求 
}

int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    } 
    sort(a+1,a+n+1);//先排好序,方便比较(其实无所谓)
     
    long long l=0,r=1e9+1,mid;//l赋极小值,r赋极大值 
    while(l+1<r){
        mid=(l+r)/2;//mid赋l与r的中间值,用以二分 
        if(wood(mid)){
        //将mid带入函数,如果返回为真,说明符合条件,可以将长度增大 
        //    cout<<l<<" "<<r<<endl;
            l=mid;
            ans=mid;
        }
        else {
            r=mid;
            //cout<<l<<" "<<r<<endl;
        }
    }
    
    printf("%lld",ans);//数据类型longlong的输出方式。 
    return 0;
}

 

标签:洛谷,int,题解,木材,long,P2440
From: https://www.cnblogs.com/zhangqixun/p/17066688.html

相关文章

  • 洛谷P1259 黑白棋子的移动 题解
    本蒟蒻这题用的打表做法,其实也可以理解为是一种递推。先来观察一下样例:当n为7时,输出共有14行,易得输出行数为2n。ooooooo*******--oooooo--******o*oooooo******--o......
  • LeetCode-670. 最大交换-题解分析
    题目来源670.最大交换题目详情给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例1:输入:2736输出:7236解释:交换数字2和数字......
  • 题解 ARC154D【A + B > C ?】
    显然\(1+1>x\)对任意大于\(1\)的正整数\(x\)都不成立。利用这一点,我们可以在\(n-1\)次询问内问出\(1\)的位置。具体地,首先假设\(p_1\)为\(1\),记我们假设的为......
  • 莫比乌斯函数(P3455 题解)
    题目链接。我们定义\(n\)的莫比乌斯函数为\(\mu_n\)。我们将\(n\)分解质因式后为\(n=p_1^{\alpha_1}p_2^{\alpha_2}\cdotsp_k^{\alpha_k}\)则\(\mu_n=\begin......
  • CF1726D 题解
    EdgeSplit。一开始nt了,以为红边为一颗树,蓝边为剩余边,蓝边就不会有环了。假设有\(n\)个点,\(m\)条边,且这些边没有出现环,那么连通块的数量为\(n-m\),因为不存在环,......
  • AT_abc285_e 题解
    WorkorRest。我们考虑相邻两个假期之间的工作效率和。设\(len\)为相邻两个假期间隔的天数。举个例子,如果假期为\(\{1,3,7\}\),那么\(len\)为\(\{1,4\}\)。根......
  • CF1768C 题解
    \(\mathcalSolution\)【题意】题目要你构造两个序列\(p,q\),满足\(\max\{p_i,q_i\}=a_i\)。【分析】如果满足\(\max\{p_i,q_i\}=a_i\),则满足\(p_i=a_i,q_i\le......
  • CF1768D 题解
    \(\mathcalSolution\)【题意】我们可以交换任意两个数,求最小操作几次能让逆序对变成\(1\)。【分析】如果逆序对为\(1\)的排列一定是:\(2,1,\cdotsn\)\(1,3,......
  • ABC281E 题解
    \(\mathcalSolution\)本题的思路类似于对顶堆。用两个multiset来维护。\(S_1\)为第一个multiset;\(S_2\)为第二个multiset。\(S_1\)维护前\(K\)个值,\(S_2\)......
  • AT_abc277_e 题解
    \(\mathcalSolution\)【题意】给定无向图,当\(a_i=1\)时,该条边才能走。在给我们\(k\)个点,\(S_1,S_2,\cdots,S_k\),到了这些点可以选择是否取反\((1\to0,0\t......