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

长沙seo网站建设深圳市公司网站建设价格

长沙seo网站建设,深圳市公司网站建设价格,网站开发摊销,小企业官方网站制作本文涉及的基础知识点 C算法#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 在一个无限的 x 坐标轴上#xff0c;有许多水果分布在其中某些位置。给你一个二维整数数组 fruits #xff0c;其中 fruits[i] [positioni, amounti] 表示共…本文涉及的基础知识点 C算法前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 在一个无限的 x 坐标轴上有许多水果分布在其中某些位置。给你一个二维整数数组 fruits 其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 每个 positioni 互不相同 。 另给你两个整数 startPos 和 k 。最初你位于 startPos 。从任何位置你可以选择 向左或者向右 走。在 x 轴上每移动 一个单位 就记作 一步 。你总共可以走 最多 k 步。你每达到一个位置都会摘掉全部的水果水果也将从该位置消失不会再生。 返回你可以摘到水果的 最大总数 。 示例 1 输入fruits [[2,8],[6,3],[8,6]], startPos 5, k 4 输出9 解释 最佳路线为 向右移动到位置 6 摘到 3 个水果向右移动到位置 8 摘到 6 个水果 移动 3 步共摘到 3 6 9 个水果 示例 2 输入fruits [[0,9],[4,1],[5,7],[6,2],[7,4],[10,9]], startPos 5, k 4 输出14 解释 可以移动最多 k 4 步所以无法到达位置 0 和位置 10 。 最佳路线为在初始位置 5 摘到 7 个水果向左移动到位置 4 摘到 1 个水果向右移动到位置 6 摘到 2 个水果向右移动到位置 7 摘到 4 个水果 移动 1 3 4 步共摘到 7 1 2 4 14 个水果 示例 3 输入fruits [[0,3],[6,4],[8,5]], startPos 3, k 2 输出0 解释 最多可以移动 k 2 步无法到达任一有水果的地方 参数范围 1 fruits.length 105 fruits[i].length 2 0 startPos, positioni 2 * 105 对于任意 i 0 positioni-1 positioni 均成立下标从 0 开始计数 1 amounti 104 0 k 2 * 105 分析 原理 只需要左移右移一次。假定左移了两次分别移动了x1,x2,假定x1x2。则不移动x1水果不会少。 分四种情况 一左移到底。 二先左移后右移。 三右移到底。 四先右移再左移。 一是四的特殊请三是二的特殊情况。 步骤 一先获取前缀和。 二枚举左移。右移为0或负数忽视因为劣于左移到底。k为0是此条不符合。 三枚举右移。 注意 坐标无限但前缀和有限[0,iMaxPos]。 左移后的坐标可能小于0左移后的坐标** 可能大于iMax**右移后的坐标可能大于iMaxk为0时要左特殊处理。 变量解释 vNum各坐标水果数量vSum/vSum[i]记录[0,i)草莓的总数量iMoveLeft左移距离iMoveRight右移距离left移动到的最左坐标right移动到最右坐标 代码 核心代码 class Solution { public: int maxTotalFruits(vectorvector fruits, int startPos, int k) { const int iMaxPos fruits.back()[0]; vector vNum(iMaxPos 1); for (const autov : fruits) { vNum[v[0]] v[1]; } vector vSum { 0 };//vSum[i]记录[0,i)草莓的总数量 for (int i 0; i iMaxPos; i) { vSum.emplace_back(vSum.back() vNum[i]); } int iRet 0;for (int iMoveLeft 0; iMoveLeft k / 2; iMoveLeft){//先左后右const int iMoveRight k - iMoveLeft * 2;if (iMoveRight 0){continue;}const int left max(0, startPos - iMoveLeft);if (left iMaxPos){continue;}const int right min(iMaxPos, startPos iMoveRight);//可收集[left,right1)的草莓const int cur vSum[right 1] - vSum[left];iRet max(iRet, cur);}for (int iMoveRight 0; iMoveRight k / 2; iMoveRight){//先左后右const int iMoveLeft k - iMoveRight * 2;if (iMoveLeft 0){continue;}const int left max(0, startPos - iMoveLeft);if (left iMaxPos){continue;}const int right min(iMaxPos, startPos iMoveRight);//可收集[left,right1)的草莓const int cur vSum[right 1] - vSum[left];iRet max(iRet, cur);}return iRet; }}; 测试用例 template void Assert(const vector v1, const vector v2) { if (v1.size() ! v2.size()) { assert(false); return; } for (int i 0; i v1.size(); i) { assert(v1[i] v2[i]); } } template void Assert(const T t1, const T t2) { assert(t1 t2); } int main() { Solution slu; vectorvector fruits; int startPos 0; int k 0; int res; fruits {{2, 8}, {6, 3}, {8, 6}}; startPos 5 ; k 4 ; res slu.maxTotalFruits(fruits, startPos, k); Assert(9, res);fruits {{0, 9}, {4, 1}, {5, 7}, {6, 2}, {7, 4}, {10, 9}}; startPos 5; k 4; res slu.maxTotalFruits(fruits, startPos, k); Assert(14, res);fruits { {0,10000} }; startPos 20000; k 20000; res slu.maxTotalFruits(fruits, startPos, k); Assert(10000, res);fruits { {20000,10000} }; startPos 20000; k 0; res slu.maxTotalFruits(fruits, startPos, k); Assert(10000, res);//CConsole::Out(res);} 2023年3月旧代码 class Solution { public: int maxTotalFruits(vectorvector fruits, int startPos, int k) { m_c fruits.size(); int iMaxLeftIndex std::lower_bound(fruits.begin(), fruits.end(),startPos, [](const vector v, int i) { return v[0] i; }) - fruits.begin() - 1; std::mapint, int mLeftMoveNum; for (int i iMaxLeftIndex ; (i 0) (startPos - fruits[i][0] k); i–) { const int iLeftMove startPos - fruits[i][0]; mLeftMoveNum[iLeftMove] fruits[i][1] (mLeftMoveNum.empty() ? 0 : mLeftMoveNum.rbegin()-second); } int iMinRightIndex iMaxLeftIndex 1; int iRet 0; if ((iMinRightIndex m_c) (fruits[iMinRightIndex][0] startPos)) { iRet fruits[iMinRightIndex][1]; iMinRightIndex; } std::mapint, int mRightMoveNum; for (int i iMinRightIndex; (i m_c) (fruits[i][0] - startPos k); i) { const int iRightMove fruits[i][0] - startPos; mRightMoveNum[iRightMove] fruits[i][1] (mRightMoveNum.empty() ? 0 : mRightMoveNum.rbegin()-second); } int iMaxExcludeStart 0;for (int left 0; left k / 2; left){const int right k - left * 2;int iCur 0;{auto itLeft mLeftMoveNum.upper_bound(left);if (mLeftMoveNum.begin() ! itLeft){iCur (--itLeft)-second;}}{auto itRight mRightMoveNum.upper_bound(right);if (mRightMoveNum.begin() ! itRight){iCur (--itRight)-second;}}iMaxExcludeStart max(iMaxExcludeStart, iCur);}for (int right 0; right k / 2; right){const int left k - right * 2;int iCur 0;{auto itLeft mLeftMoveNum.upper_bound(left);if (mLeftMoveNum.begin() ! itLeft){iCur (--itLeft)-second;}}{auto itRight mRightMoveNum.upper_bound(right);if (mRightMoveNum.begin() ! itRight){iCur (--itRight)-second;}}iMaxExcludeStart max(iMaxExcludeStart, iCur);}iRet iMaxExcludeStart;return iRet;}int m_c;}; 扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步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
http://www.zqtcl.cn/news/408696/

相关文章:

  • 北京知名网站建设公司排名学校诗歌网站建设
  • 个人做网站接装修活哪个网站好上海造价信息网官网
  • 网页上做网会员网站备案怎么写oa报表网站开发
  • 郑州服装网站建设网站的层级
  • 东莞建设网站制作怎么建立信息网站平台
  • 网站建设的公司服务手机上做ppt的软件
  • 体育网站模版爱站网
  • 建设部网站最新消息浏览器网站大全免费
  • 网站建设 选中企动力邯郸哪有做网站的公司
  • 个人网站cms系统网站排名下降了怎么办
  • 2o18江苏建设网站施工员模试卷哈尔滨app开发
  • 网站后台管理系统论文湖州交通网站集约化建设项目
  • 唐山地区网站开发公司郑州市哪里有网站建设
  • ps做汽车网站下载网络推广专员招聘
  • 荥阳网站开发WordPress 采集文章 图片
  • 网站域名登记证明文件音乐网站开发需要什么语言工具
  • 贵州域网网站建设东莞做外贸网站的公司
  • ps怎么做华为网站界面怎样做网站步骤
  • 免费做试卷的网站或试卷seo 培训教程
  • 创意网站建设价格多少最新新闻热点事件2022年8月
  • wordpress用户登录界面插件重庆网站排名优化公司
  • 网站整体建设方案设计wordpress 插件升级慢
  • 淄博网站制作升级优化青岛品牌网站建设价格
  • 网站后台管理系统模块星星wordpress模板
  • 网站统计 中文域名优化英语
  • 自己做视频的网站吗怎么建设维护学校的网站
  • 广州网站建设好公司鲁权屯网站建设
  • 网站多数关键词网站使用mip后效果怎么样
  • 如何介绍自己做的网站建设三库一平台
  • 郑州网站商城建设iframe 一直网站底部