包河区2022年信息学竞赛试题压轴题:运输木材(tree)

题目描述 Description

牛牛家有一个林场,现有 n 条木材,每条木材的长度已知且均为正整数。木材可以以任意正整数长度切割,但不可以连接。假设木材直径都一致,现有卡车可装m条木材,但是卡车长度有限,现在要从这些木材中切割出 m 条长度相同的木材,为经济效益最大化,应该选择多长的卡车,求这些木材的最大长度是多少。

输入描述 Input Description

第一行是一个不超过 100 的正整数 n。

第二行是 n 个不超过10^6的正整数,表示每条木材的长度。

第三行是一个不超过10^8的正整数 m。

输出描述 Output Description

可以切割出的木材(注:真题描述为“绳段”)的最大长度,若无法切割,输出“Failed”。

样例输入 Sample Input

3 30 20 55 4

样例输出 Sample Output

20

这道题目是包河区的压轴题,难度非常大,用求解转判定的方法太难,所以我们可以考虑用二分:

先把定义搞好

int a[100005];
int n,m,l,r=100000001;//二分的一些变量,不知道的可以去网上学一学,这个是算法中期的内容,很难

然后是输入

cin>>n;
for(int i=1;i<=n;i++){
   cin>>a[i];
}
cin>>m;

接下来就是重要的部分了,这个和普通的二分不一样,他在普通的二分框架还要加一个循环

while(r-l>1){
   int mid=(l+r)/2;
   int sum=0;
   for(int i=1;i<=n;i++){
      sum+=a[i]/mid;
   }
   if(sum>=m){
      l=mid;
   }else{
      r=mid;
   }
}

最后的二分判断我就讲一下思路吧

如果(l==0){
    输出;//题目要求的输出的单词
}否则{
    输出
}

全部的代码我就不发了,大家看我的题解不要赋值完整代码,题解的真正意义是懂得这道题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
庐阳区2022信息学竞赛试题工作日(day)将是一项具有挑战性和丰富内容的学术竞赛活动。信息学竞赛是一项旨在考察参赛者在计算机科学、算法设计和编程技能等方面的能力的竞赛活动。 在庐阳区2022信息学竞赛试题中,参赛者将面临各种具有难度的问,这些问往往涉及到计算机科学的基本概念和算法设计。参赛者需要独立思考和解决这些问,表现出对编程语言和算法的掌握能力。 试题中可能包括编写程序解决问的任务,参赛者需要用合适的编程语言编写程序,并根据目需求输出正确的结果。这个过程要求参赛者在理解问、设计算法和实现代码等方面具备扎实的计算机科学基础知识和编程技巧。 庐阳区2022信息学竞赛试题将在工作日进行。参赛者需要在规定的时间内完成试题,并提交自己的答案。竞赛的评判标准将根据参赛者目的正确性、程序的效率和代码的质量等方面进行评估。 信息学竞赛的目的是激发学生对计算机科学的兴趣,提高他们的编程和问解决能力。通过参与竞赛,学生们可以拓宽视野、增加知识储备,并提高自己在计算机科学领域的竞争力。 参与庐阳区2022信息学竞赛试题的选手们将面临一项充满挑战的学术竞赛,他们需要发挥自己的聪明才智,展现自己的实力。希望这次竞赛能够激发更多对信息学的热爱,培养更多的优秀人才。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值