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

信誉好的企业网站开发如何做网站seo韩小培

信誉好的企业网站开发,如何做网站seo韩小培,网络网页制作,wordpress页脚居中【题解】期末考试抱佛脚最短时间(动态规划 | 二进制背包) 题目链接 题目背景 kkksc03 的大学生活非常颓废,临近期末考试才开始疯狂复习。他有 4 门科目需要复习,每一科都有若干道题目,每道题目需要一定的时间完成。…

【题解】期末考试抱佛脚最短时间(动态规划 | 二进制背包)

题目链接

题目背景

kkksc03 的大学生活非常颓废,临近期末考试才开始疯狂复习。他有 4 门科目需要复习,每一科都有若干道题目,每道题目需要一定的时间完成。

幸运的是,kkksc03 有一个独特的能力:左右大脑可以同时计算两道不同的题目但仅限于同一门科目),也就是说,同一时间可以同时做两道不同的题目。

为了能尽快开始处理洛谷上的 bug,他希望以最短的总时间完成所有复习工作。


题目描述

给定 4 门科目的题目数量和每道题目所需时间,kkksc03 必须一科一科地复习(不能同时跨科目),并且每一科允许左右脑同时处理不同的题目。

求出完成所有科目的最短总复习时间


输入格式

  • 第 1 行:四个正整数 s₁, s₂, s₃, s₄,分别表示第 1~4 科的题目数。
  • 第 2-5 行:分别给出每门科目的每道题目的完成时间。

输入样例

1 2 1 3
5
4 3
6
2 4 3

输出格式

一行一个整数,表示复习完所有科目的最短时间。

输出样例

20

题目分析

这道题的核心是:

  • 每一科单独处理,不能跨科目并行。
  • 每一科允许左右脑同时处理两道不同的题目等价于把题目集合分成两个子集,让两个子集的时间总量尽量平衡。

这很像背包问题

进一步理解:

  • 如果一个科目总时间是 sum,我们可以把所有题目划分成两部分,使得两部分的时间尽可能接近。
  • 最慢的那部分时间,决定了完成这一科目的所需时间。
  • 也就是:某一部分时间最长为 sum/2 的最大可达值 x,所需时间就是 max(x, sum - x)
  • 因为左右脑是同步进行的,所以总时间就是其中较大的那部分时间。

总结一下,每一科是独立的小问题,每一科本质上是一个0-1 背包问题,背包容量是 sum/2


解题思路

  1. 对于每一科,读取所有题目的时间。
  2. 计算所有题目时间的总和 sum
  3. 使用 dp[i] 表示是否可以恰好达到时间 i
  4. 标准的 0-1 背包过程,从大到小枚举。
  5. 找到不超过 sum/2 的最大可达时间 x
  6. 当前科目的最短时间为 max(x, sum-x)
  7. 累加到总时间。

AC代码讲解

#include<bits/stdc++.h>
using namespace std;int main()
{int dp[1000] = { 0 };  // 背包DP数组,大小足够int time[22] = { 0 };  // 存储每科的各题时间,最多20题int s[5] = { 0 };      // 四门科目题目数量int ans = 0;           // 最后答案// 输入每科题目数量cin >> s[1] >> s[2] >> s[3] >> s[4];for (int t = 1; t <= 4; ++t)  // 处理4门科目{int sum = 0;for (int i = 1; i <= s[t]; ++i)  // 输入每道题目所需时间{cin >> time[i];sum += time[i];}// 0-1 背包求尽量接近 sum/2 的最大时间for (int j = 1; j <= s[t]; ++j){for (int i = sum / 2; i >= time[j]; --i){dp[i] = max(dp[i], dp[i - time[j]] + time[j]);}}int temp = sum - dp[sum / 2]; // temp 是两个集合时间差较大的那部分ans += max(dp[sum/2], temp);  // 加上每科最短时间// 清空dp数组,准备下一科for (int i = 1; i <= sum/2; ++i) dp[i] = 0;}cout << ans;return 0;
}

复杂度分析

  • 单科学习部分的时间复杂度为 O(题目数 × 总时间/2),由于
    • 题目数 <= 20
    • 单题时间 <= 60
    • 所以总时间最多是 20 × 60 = 1200,sum/2 最多600。
  • 因此在最坏情况下,单科DP是 O(20×600)=12000,四科一起大约 48000,运行非常快,可以轻松通过

总结

  • 本题本质是每科单独的背包问题
  • 充分理解左右脑同步处理的能力,将问题转化为集合划分问题
  • 小数据量背包,暴力DP即可!

如果你掌握了这一类背包技巧,很多像 “集合划分”、“最大平均值”、“划分集合使得子集和最接近” 等问题都可以迎刃而解!


如果你想要,我还可以帮你附一版更简洁版代码!要不要?✨


文章转载自:

http://tkPzB27k.czgfn.cn
http://DTacU2yl.czgfn.cn
http://kHgqwzOK.czgfn.cn
http://v20Jsbt1.czgfn.cn
http://uuSxeZMO.czgfn.cn
http://t0lIiFtJ.czgfn.cn
http://LJp2jG7W.czgfn.cn
http://oDnt9b4p.czgfn.cn
http://oPXFtG2n.czgfn.cn
http://DhePM1Tu.czgfn.cn
http://ryxmwgmi.czgfn.cn
http://2Lv7ioCx.czgfn.cn
http://XyOMcobg.czgfn.cn
http://VGheW3FC.czgfn.cn
http://EEWKtbRO.czgfn.cn
http://1iYI4bYe.czgfn.cn
http://nVH6Nki4.czgfn.cn
http://NTRIeKxn.czgfn.cn
http://YA8Ot0JR.czgfn.cn
http://uePnAric.czgfn.cn
http://CRt0eNMX.czgfn.cn
http://OLwfjncq.czgfn.cn
http://jUiZhwvg.czgfn.cn
http://h1G7OYZZ.czgfn.cn
http://1Jafoh1c.czgfn.cn
http://3UrtrLtL.czgfn.cn
http://EHIZHGrA.czgfn.cn
http://5dEMQEop.czgfn.cn
http://Q3mCUrwx.czgfn.cn
http://2Nj4swDA.czgfn.cn
http://www.dtcms.com/wzjs/730361.html

相关文章:

  • 住房和城乡建设部网站打不开软件设计说明书模板
  • 网站建设方案项目背景意义WordPress博客使用教程
  • 苏州网站建设要点福州公司网站建设_
  • 网站域名注册如何填写软件学校网站模板下载
  • 那个软件可以做三个视频网站企业营销型网站的内容
  • 建站教程流程图用cms建设网站课程宅门
  • 百度有做企业网站吗wordpress上传的文件在哪个文件夹
  • 电子商务网站经营特色分析的主要内容包括企业邮箱申请理由
  • 微信公众号怎么做链接网站吗长春宣传片拍摄
  • 大连网站制作431要做一个app需要多少资金
  • 网站域名免费申请h5游戏搭建
  • 北京网站建设91086wordpress 英语
  • 内蒙古自治区工程建设网站软件工程师一个月工资多少
  • 大型网站建设设备wordpress2018
  • 免费建站网站有哪些邢台163
  • 东三省网站建设公司技术支持::天空网络-临汾做网站
  • 网站升级通知常见的网络推广平台
  • 怎么做个人网站的搜索引擎的工作原理是什么?
  • 学校文化建设网站湖南微信网站公司
  • 百度站长工具网站验证wordpress重写内置函数
  • 网站开发进度确认单河源建设工程交易中心网站
  • 营销型网站开发营销中国十大装饰公司
  • 安庆网站建设免费建一个网页的链接
  • 沈阳模板建站系统wordpress只更换域名
  • 织梦网站描述营口建设工程信息网站
  • 企业建网站开发修改wordpress中附件上传大小
  • 可视化信息 网站土特产网站建设事业计划书
  • 河南郑州建设网站地方网站怎么做
  • 做视频的网站那几个盈利了如何用wordpress建站
  • 河北建设厅查询网站wordpress打赏key插件