当前位置: 首页 > wzjs >正文

网站后台管理要求网站建设要什么软件有哪些

网站后台管理要求,网站建设要什么软件有哪些,莱芜论坛杂谈,开题报告旅游网站开发P12269 [蓝桥杯 2024 国 Python B] 切木棒 题目链接 题目描述 给定 n n n 根木棒,第 i i i 根木棒的长度为 L i L_i Li​。 每次你可以选择任意一根木棒并将其切成两段,切完后两段的长度都必须为整数。 请问,如果一共切 m m m 次&am…

P12269 [蓝桥杯 2024 国 Python B] 切木棒

题目链接

题目描述

给定 n n n 根木棒,第 i i i 根木棒的长度为 L i L_i Li

每次你可以选择任意一根木棒并将其切成两段,切完后两段的长度都必须为整数。

请问,如果一共切 m m m 次,在所有的方案中,切完后木棒中最长的一根最短是多少?

输入格式

输入的第一行包含两个整数 n , m n, m n,m,用一个空格分隔。

第二行包含 n n n 个正整数 L 1 , L 2 , … , L n L_1, L_2, \ldots, L_n L1,L2,,Ln,依次表示每根木棍的长度。

输出格式

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

输入输出样例 #1

输入 #1

3 3
3 4 6

输出 #1

3

说明/提示

评测用例规模与约定

  • 对于 60 % 60\% 60% 的评测用例, n ≤ 5000 n \leq 5000 n5000
  • 对于所有评测用例, 1 ≤ n ≤ 3 × 10 5 1 \leq n \leq 3 \times 10^5 1n3×105 1 ≤ m , L i ≤ 10 9 1 \leq m, L_i \leq 10^9 1m,Li109

以下是根据你提供的题面与代码撰写的一篇逻辑严密、条理清晰的题解博客:


题解(二分答案)

一、抽象建模

我们可以将这个问题抽象为:

给定一组木棒,每根长度为 L i L_i Li,最多可以进行 m m m 次切割,每次将一根木棒切成两段。问:能否通过最多 m m m 次切割,使得所有木棒的长度都 ≤ x \leq x x

我们尝试对这个 x x x 进行 二分查找


三、二分答案模型构建

3.1 二分的定义

我们想要的是:

  • 所有切割方案中,最终“最长的木段”尽可能短
  • 这就是一个最小化最大值的问题,典型的二分答案模型

所以我们设定:

  • 搜索区间为 [ 1 , max ⁡ ( L i ) − 1 ] [1, \max(L_i) - 1] [1,max(Li)1],即所有可能的最大段长度

  • 每次假设一个答案 mid,判断是否可以通过 ≤ m 次切割,使得所有木段长度 ≤ mid

3.2 判定函数 f(mid)

我们设计一个函数 f(mid),表示:

要让所有木棒都被切割为长度 ≤ mid 的段,最少需要多少次切割?

具体做法:

  • 对于每根木棒 l i l_i li

    • 如果 l i ≤ m i d l_i \leq mid limid:不需要切割

    • 如果 l i > m i d l_i > mid li>mid

      • l i m o d m i d = 0 l_i \bmod mid = 0 limodmid=0,切成 l i / m i d l_i / mid li/mid 段,需要 l i / m i d − 1 l_i / mid - 1 li/mid1 次切割
      • 否则,切成 ( l i / m i d ) + 1 (l_i / mid) + 1 (li/mid)+1 段,需要 ( l i / m i d ) (l_i / mid) (li/mid) 次切割

我们对所有木棒累加所需切割次数,如果不超过 m m m,说明 mid 可行。


四、二分过程分析

我们使用 标准的左闭右闭二分,代码结构如下:

ll left = 1, right = max_L - 1;
while (left <= right) 
{ll mid = (left + right) / 2;if (f(mid) <= m) {ans = mid;right = mid - 1;} else {left = mid + 1;}
}

七、完整代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
using ll = long long;// 函数 f(mid):计算当规定最大木棒长度为 mid 时,
// 需要的最少切割次数(每次切割只能将一根木棒分成两段)
int f(ll mid, vector<ll>& nums)
{ll cnt = 0; // 记录总共的切割次数for (auto num : nums){// 如果当前木棒长度 <= mid,不需要切割if (num > mid){// 能整除:刚好切成 num / mid 段,需要 num / mid - 1 次切割if (num % mid == 0){cnt += (num / mid) - 1;}// 不能整除:切成 num / mid + 1 段,需要 num / mid 次切割else{cnt += (num / mid);}}}return cnt; // 返回总切割次数
}int main()
{// 输入:n 表示木棒数量,m 表示最多切割次数ll n, m;cin >> n >> m;vector<ll> nums(n, 0); // 存储每根木棒长度for (ll i = 0; i < n; i++){cin >> nums[i]; // 输入每根木棒长度}// 预处理:对数组排序,便于确定最大木棒长度sort(nums.begin(), nums.end());// 二分的范围:left = 1(最小可能长度),right = 最大木棒长度 - 1// 注意这里 right 设置为 nums[n - 1] - 1,// 因为如果不需要切割,那最大长度就是原始最大值,// 但现在必须切 m ≥ 1 次,最大长度就不会等于原始最大值,所以减 1。ll left = 1, right = nums[n - 1] - 1;ll ans = 0; // 记录满足条件的最小最大长度// 开始二分查找while (left <= right){ll mid = left + (right - left) / 2; // 防止溢出,计算中点// 判断当最大长度限制为 mid 时,是否可以在 m 次以内完成切割if (f(mid, nums) <= m){// 可行,更新答案,并尝试寻找更小的最大长度ans = mid;right = mid - 1;}else{// 不可行,mid 太小,尝试更大的长度left = mid + 1;}}// 输出最终答案,即所有木棒长度不超过该值的最小值cout << ans;return 0;
}

八、总结与技巧回顾

  • 本题是典型的 最小化最大值问题,适合使用 二分答案

  • 关键在于构造一个合理的判定函数 f(mid)

  • 边界细节很重要:

    • m ≥ 1 m \geq 1 m1 说明必须切割,所以最大长度不能等于原始最大长度

    • right = max - 1 是关键优化点



文章转载自:

http://wphakASz.mjbnp.cn
http://eYsdtPrL.mjbnp.cn
http://anUYIzGM.mjbnp.cn
http://iM9flx3g.mjbnp.cn
http://cOOQnv0p.mjbnp.cn
http://F46egVMm.mjbnp.cn
http://x5WGhXtw.mjbnp.cn
http://gjwy0oKG.mjbnp.cn
http://Cp8seses.mjbnp.cn
http://4VPocpoJ.mjbnp.cn
http://2KC7ILly.mjbnp.cn
http://m359yxkX.mjbnp.cn
http://r0U7ECes.mjbnp.cn
http://RLT77cdE.mjbnp.cn
http://MVApmBzj.mjbnp.cn
http://LK7cP4TO.mjbnp.cn
http://QCLr67KP.mjbnp.cn
http://U3HEZsRS.mjbnp.cn
http://s2GM9nHO.mjbnp.cn
http://Z7EMDa8i.mjbnp.cn
http://QWCU9oZr.mjbnp.cn
http://uA7sVQIR.mjbnp.cn
http://ILO8grRv.mjbnp.cn
http://5Oaoz1kA.mjbnp.cn
http://U2iah85C.mjbnp.cn
http://lbLsg3WQ.mjbnp.cn
http://nlzesgb6.mjbnp.cn
http://zvzvIBTa.mjbnp.cn
http://o6UOIb4F.mjbnp.cn
http://Dg6gBwGl.mjbnp.cn
http://www.dtcms.com/wzjs/712109.html

相关文章:

  • 网站设计深圳联系电话?php和网站开发
  • 网站建设工具的实验心得wordpress三栏模板下载
  • 东莞网站建设乐云seo在线制作优化网站关键词优化
  • 街道网站建设更新汇报网址大全100个
  • wordpress说有图片居中对齐宁波网站优化公司推荐
  • 让别人访问自己做的网站多语言商城源码
  • 东凤镇 网站建设h5响应式网站建设方案
  • 怎么用模板建网站做网站需要考虑哪些问题
  • 怎么网站排名seo用centos搭建wordpress
  • 有什么网站做图片宣传海报网站 服务器 域名
  • 建设网站的功能定位是什么原因网站直播用php怎么做
  • 网站建设实训报告2000字上海闵行区
  • 网站开发需要如何压缩代码洛阳网站建设优惠公司
  • 门户网站创新的方式有网站如何做视频链接地址
  • 网站建设预招标江门城乡建设局官方网站
  • 网站app制作高性能网站建设进阶指南pdf
  • 著名的设计网站品牌网站建设毛尖
  • 郑州网站建设 新浪博客抚顺地区网站建设
  • 廊坊高端品牌网站建设网站建设怎么选择MySQL数据库大小
  • 做视频类网站需要哪些许可证宁波网站制作费用
  • 中文域名转码网站网络设计院
  • 哪里有建站代理加盟手机网站设计要素
  • 哪些网站是用h5做的关于网站建设的工作总结
  • 上海建设集团网站拓者设计室内设计网
  • 做网站还是app市场营销策划
  • 响应式网站开发有哪些框架南昌优化排名推广
  • 第四章第二节网站建设的教学设计搜索排名的影响因素
  • 影音先锋资源网站建设河南安阳区号是多少
  • 可视化建网站网店装修免费模板
  • 深圳罗湖企业网站推广做网站申请哪类商标