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

网站建设个人网银新产品推广

网站建设个人网银,新产品推广,找人做网站要准备什么软件,珠海汽车网站建设本文涉及知识点 动态规划 区间dp 位运算 LeetCode100259. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues#xff0c;长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组#xff0c;对于第 ith 个子数…本文涉及知识点 动态规划 区间dp 位运算 LeetCode100259. 划分数组得到最小的值之和 给你两个数组 nums 和 andValues长度分别为 n 和 m。 数组的 值 等于该数组的 最后一个 元素。 你需要将 nums 划分为 m 个 不相交的连续 子数组对于第 ith 个子数组 [li, ri]子数组元素的按位AND运算结果等于 andValues[i]换句话说对所有的 1 i mnums[li] nums[li 1] … nums[ri] andValues[i] 其中 表示按位AND运算符。 返回将 nums 划分为 m 个子数组所能得到的可能的 最小 子数组 值 之和。如果无法完成这样的划分则返回 -1 。 示例 1 输入 nums [1,4,3,3,2], andValues [0,3,3,2] 输出 12 解释 唯一可能的划分方法为 [1,4] 因为 1 4 0 [3] 因为单元素子数组的按位 AND 结果就是该元素本身 [3] 因为单元素子数组的按位 AND 结果就是该元素本身 [2] 因为单元素子数组的按位 AND 结果就是该元素本身 这些子数组的值之和为 4 3 3 2 12 示例 2 输入 nums [2,3,5,7,7,7,5], andValues [0,7,5] 输出 17 解释 划分 nums 的三种方式为 [[2,3,5],[7,7,7],[5]] 其中子数组的值之和为 5 7 5 17 [[2,3,5,7],[7,7],[5]] 其中子数组的值之和为 7 7 5 19 [[2,3,5,7,7],[7],[5]] 其中子数组的值之和为 7 7 5 19 子数组值之和的最小可能值为 17 示例 3 输入 nums [1,2,3,4], andValues [2] 输出 -1 解释 整个数组 nums 的按位 AND 结果为 0。由于无法将 nums 划分为单个子数组使得元素的按位 AND 结果为 2因此返回 -1。 提示 1 n nums.length 104 1 m andValues.length min(n, 10) 1 nums[i] 105 0 andValues[j] 105 动态规划的位运算 f(i,j) x : i j \Large\And_{x:i}^j x:ij​ vNext[cur] 记录符合以下条件之一的next 一next-1 cur。 二f(i,next) ≠ \neq  f(i,next-1)。 iBitCnt log(max(nums[i]) ≈ \approx ≈ 22 显然next的数量不会超过iBitCnt。 如果f(i,j)发生变化至少一个二进制1变成0。 动态规划 动态规划的状态表示 dp[len][cur] 表示将nums[0…cur]划分为len个区间的最小和。 空间复杂度O(nm) 动态规划的转移方程 r个区间向r1个区间转移时 如果f(cur,next) 等于 andValues[r-1]则: MinSelf(dp[r1][x],dp[r][cur-1]nums[x]) x ∈ [ n e x t , n e x t 的下一个值 ) 这样值设置的时间复杂度是 \in[next,next的下一个值) 这样值设置的时间复杂度是 ∈[next,next的下一个值)这样值设置的时间复杂度是 O ( m × n × i B i t C n t × n ) O(m \times n \times iBitCnt \times n ) O(m×n×iBitCnt×n) 超时了。 只更新x next其它的用二种方式更新 如果 (nums[cur] andValues[r-1]) andValues[r-1] 则MinSelf(dp[r][cur],dp[r][cur-1]) 时间复杂度$ O ( m × n × i B i t C n t ) O(m \times n \times iBitCnt ) O(m×n×iBitCnt) 动态规划的初始值 枚举第一个区间 动态规范的返回值 dp.back().back() 动态规划的填表顺序 len 从1到m_r-1。 cur从1到m_c-1 代码 核心代码 templateclass ELE,class ELE2 void MinSelf(ELE* seft, const ELE2 other) {*seft min(*seft,(ELE) other); }templateclass ELE void MaxSelf(ELE* seft, const ELE other) {*seft max(*seft, other); }class Solution { public:int minimumValueSum(vectorint nums, vectorint andValues) {const int iBitCnt 22;m_r andValues.size();m_c nums.size();const int iMax (1 iBitCnt) - 1;vectorvectorint dp(m_r1,vectorint(m_c, m_iNotMay));int iAnd iMax;for (int i 0; i m_c; i) {iAnd nums[i];if (iAnd andValues[0]) {dp[1][i] nums[i];}}vectorsetint vNext(m_c);{vectorint next(iBitCnt, m_c);for (int i nums.size() - 1; i 0; i--) {vNext[i] setint(next.begin(), next.end());vNext[i].emplace(i);vNext[i].erase(m_c);for (int bit 0; bit iBitCnt; bit){bool b (1 bit) nums[i];if (!b) {next[bit] i;}}}}for (int r 1; r m_r; r){for (int cur 1; cur m_c; cur){int iAdd iMax;for (const auto next : vNext[cur]) {iAdd nums[next];if (andValues[r] iAdd) {MinSelf(dp[r 1][next], dp[r][cur - 1] nums[next]);}}if ((andValues[r - 1] nums[cur]) andValues[r - 1]) {MinSelf(dp[r][cur], dp[r][cur - 1]nums[cur]-nums[cur-1]);} } }{int r m_r;for (int cur 1; cur m_c; cur){ if ((andValues[r - 1] nums[cur]) andValues[r - 1]) {MinSelf(dp[r][cur], dp[r][cur - 1] nums[cur] - nums[cur - 1]);}}}const int iRet dp.back().back();return (iRet 1000000) ? -1 : iRet;}int m_r,m_c;const int m_iNotMay 1000000000; };测试用例 templateclass T void Assert(const T t1, const T t2) {assert(t1 t2); }templateclass T void Assert(const vectorT v1, const vectorT v2) {if (v1.size() ! v2.size()){assert(false);return;}for (int i 0; i v1.size(); i){Assert(v1[i], v2[i]);}}int main() {vectorint nums, andValues;int k;{Solution sln;nums { 1, 9, 8, 8 }, andValues { 1,8 };auto res sln.minimumValueSum(nums, andValues);Assert(9, res);}{Solution sln;nums { 1, 3, 2, 4, 7, 5, 3 }, andValues { 0, 5, 3 };auto res sln.minimumValueSum(nums, andValues);Assert(12, res);}{Solution sln;nums { 1, 4, 3, 3, 2 }, andValues { 0, 3, 3, 2 };auto res sln.minimumValueSum(nums, andValues);Assert(12, res);}//vectorint nums { 3,6,9 };//int k;////{// Solution sln;// nums { 3,6,9 }, k 3;// auto res sln.findKthSmallest(nums, k);// Assert(9LL, res);//}}扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。
http://www.pierceye.com/news/300178/

相关文章:

  • 教育网站开发报告郑州哪家医院看男科比较专业
  • 企业门户网站系统wordpress 商业
  • 信金在线制作网站宁波网站建设有限公司
  • 乌海品牌网站建设如何做请求队列防止网站高并发
  • 企业网站开发平台做的网站上传到服务器
  • 企业网站开发开题报告青岛app软件开发
  • 静态网站 搜索合肥做双语外贸网站
  • 网站建设需求计划书手机应用市场
  • 乐清网站自助网站系统
  • 北京4网站建设WordPress不会php
  • wordpress百度搜索对接免费seo提交工具
  • 网站结构优化包括哪些WordPress多城市
  • 北京三屏网站制作wordpress 分词插件
  • 潍坊哪里可以做网站建设网站一定需要云服务器么
  • 高新网站建设多少钱重庆模板网站建设费用
  • 陕西的网站建设公司哪家好网站建设与维护典型案例
  • 遵义网站开发的公司有哪些网站建设vps
  • 百度网站与推广徐州网站建设网络推广
  • 8818网站建设网站建设平台一般多少钱
  • 万网怎样做网站调试百度在线扫一扫
  • 建设网站平台哪个好如何提高商城网站权重
  • 深圳手机网站设计抖音开放平台
  • 平山做网站优化网页版梦幻西游五色石攻略
  • 字体图标制作网站长沙网站排名公司哪家好
  • 百度和阿里哪个厉害做网站千万不要学数字媒体技术
  • 可信赖的商城网站建设长春疾控最新消息
  • 做阿里网站开发公司名字
  • 企业网站建设内容杭州有几个区
  • 松江建设管理中心网站网站sem托管
  • 做网站前期框架图射击官网