C++课后习题训练记录Day157

1.练习项目 :

问题描述

给定 n 根木棒,第 i 根木棒的长度为 Li​。每次你可以选择任意一根木棒并将其切成两段,切完后两段的长度都必须为整数。请问,如果一共切 m 次,在所有的方案中,切完后木棒中最长的一根最短是多少?

输入格式

输入的第一行包含两个整数 n,m,用一个空格分隔。第二行包含 n 个正整数 L1,L2,...,Ln​,依次表示每根木棍的长度。

输出格式

输出一行包含一个整数表示答案。

2.选择课程

在蓝桥云课中选择题库,选择题号20136并开始练习。

3.开始练习

(1)源码 :

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

const int N=3e5+10;

ll aN;

int n,m;

bool check(int mid)

{

ll res=0;

for(int i=1;i<=n;i++){

res=res+ai/mid+(ai%mid==0?0:1)-1;

}

return res<=m;

}

int main()

{

ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);

cin>>n>>m;

for(int i=1;i<=n;i++){

cin>>ai;

}

ll l=1,r=2e18;

while(l<=r){

ll mid=(l+r)/2;

if(check(mid))r=mid-1;

else l=mid+1;

}

cout<<l<<'\n';

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。

(3)练习心得:注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法 是否切换 为英语模式;语法是否错误。

相关推荐
「QT(C++)开发工程师」1 小时前
C++ 11 常用for循环
开发语言·c++
我还记得那天1 小时前
0 初识C++
开发语言·c++
FfHUCisI2 小时前
Go 编译过程全景
开发语言·后端·golang
FfHUCisI2 小时前
Golang 语法分析与 AST:Parser 与 go/ast
开发语言·后端·golang
lemon_sjdk3 小时前
ObjectProperty
java·开发语言·算法
大模型码小白3 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
hh9503 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
「QT(C++)开发工程师」3 小时前
C++ std::move 详解
开发语言·c++
matlab代码3 小时前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab