数组n个值切割成m段,保证m段中和值最小

  • [牛客网]shopee的零食柜
    • 上代码
    • 分析:动态规划问题

[牛客网]shopee的零食柜

题目链接如下:https://www.nowcoder.com/questionTerminal/24a1bb82b3784f86babec24e4a5c93e0?orderByHotValue=1&page=1&onlyReference=false

上代码

#include<iostream>
#include<vector>using namespace std;void getMaxPacePerMinute(long n, long m, long bottom, long ceil, vector<long> &musics) {int maxPace = 0;while (bottom <= ceil) {maxPace = bottom + ((ceil - bottom) >> 1);//cout << "maxpace:" << maxPace <<" " <<bottom <<" " << ceil << endl;auto num = 0;for(auto i = 0; i < n;) {auto sum = 0;while(i < n && (sum + musics[i] <= maxPace)) {sum += musics[i++];}num++;if (num > m) {break;}}//cout << "m ,num:" << m << " " << num << endl;if (num <= m) {ceil = maxPace -1;} else {bottom = maxPace + 1;}}cout << maxPace << endl;return;
}test
/**
8 5
6 5 6 7 6 6 3 1*/int main() {long n, m; //音符数,分钟数long bottom = 0, ceil = 0; //单分钟最小步数,最大步数cin >> n >> m;vector<long> musics(n, 0);for(auto i = 0; i < n; i++) {cin >> musics[i];bottom = max(bottom, musics[i]);ceil += musics[i];}//cout << n << m << bottom << ceil << endl;getMaxPacePerMinute(n, m, bottom, ceil, musics);return 0;
}

分析:动态规划问题

其实是动态规划问题,看了调试你就知道怎么回事了
Shopee git:(yinxiaolin) ✗ g++ -std=c++11 snackStand.cpp
➜  Shopee git:(yinxiaolin) ✗ ./a.out
8 5
6 5 6 7 6 6 3 1
maxpace:23 7 40
m ,num:5 2
maxpace:14 7 22
m ,num:5 4
maxpace:10 7 13
m ,num:5 6
maxpace:12 11 13
m ,num:5 5
maxpace:11 11 11
m ,num:5 5
11

数组n个值切割成m段,保证m段中和值最小相关推荐

  1. String 类型切割成数组-转int数组-升列排序-拼接字符串、需求 有如下一个字符串 91 27 46 38 50

    /* 需求 有如下一个字符串 "91 27 46 38 50" 请编写代码最终输出结果是 "27 38 46 50 91" 分析: 1.将字符串切割成字符串数组 ...

  2. 把字符串按照某几个字符切割成数组

    我们在工作中,经常会遇到把字符串切割成数组的情况,官方也为我们提供了 stringObject.split(separator,howmany) 方法,实例: const str = '开心哈哈哈哈, ...

  3. python 利用 PIL 将数组值转成图片/python利用h5py、pyhdf读取.h5、.hdf文件信息

    python 利用 PIL 将数组值转成图片 安装 PIL 包 pip install pillow 将二维数据转换成单通道图片 from PIL import Image arr=numpy.asa ...

  4. php 数组 组成新数组,PHP让数组中相同值的组组成新的数组详解

    本文主要为大家分享一篇PHP让数组中有相同值的组成新的数组实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 实例如下所示:$arr = array( 0=> ...

  5. psd页面切割成html技巧总结

    关键字:psd切割技巧 生成html图片要点 css样式要点 rem 与高手切割后的代码对比学习提高(考察点:切割后的页面质量,源码大小及图片大小,js技术,动画技术,开发和命名规范等) 一.psd切 ...

  6. PHP array_count_values() 函数用于统计数组中所有值出现的次数。

    定义和用法 array_count_values() 函数用于统计数组中所有值出现的次数. 本函数返回一个数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数. 语法 array_count ...

  7. 删除数组中指定元素_如何删除PHP数组元素键值并重新排序

    点击蓝字关注我们!每天获取最新的编程小知识! 源 / php中文网      源 / www.php.cn 想要删除PHP数组中某个元素键值,然后重新规范索引排序.我们可以使用PHP中的内置函数uns ...

  8. 检查Bash数组是否包含值

    在Bash中,最简单的测试数组是否包含某个值的方法是什么? 编辑 :在答案和评论的帮助下,经过一些测试,我想到了这个: function contains() {local n=$#local val ...

  9. json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值...

    json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 原文:json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值 主要内容: 一 ...

最新文章

  1. NSString取子串
  2. delphi回调函数
  3. HashMap中的hash函数
  4. 自学python有哪些方向-机械想自学python可以学习哪个方向?
  5. grunt.config()_gruntjs api
  6. C++ STL快速入门
  7. 如何开发一个npm包并发布
  8. ipython 提示python已停止运行_你可能不知道的iPython使用技巧
  9. java反射快速入门(二)
  10. 作者:孙晨(1995-),女,华东师范大学数据科学与工程研究院硕士生
  11. dom4j xml解析 写框架必备技能(一)
  12. 李宏毅机器学习 1.Machine Learning_introduction
  13. tkinter中text插入_tkinter做一个体重档案
  14. python可以画动态图吗_matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
  15. 我是如何从零基础自学到找到工作经过
  16. 毕业设计《项目管理》总结06之ajax的初步使用经验
  17. 项目验收文档模板(三)
  18. winhex 19.8 注册码生成工具(keygen)
  19. ActiveMQ 下载、安装
  20. 小米人APK改之理(APK IDE)

热门文章

  1. 让你的 Drupal 7 支持多字节 UTF-8
  2. 【推荐】一个强大的html5游戏引擎 pixi
  3. Java 网络编程:必知必会的 URL 和 URLConnection
  4. PM、oSE、oMDE、oTSE、oTC角色职责
  5. MQTT协议详解 Linux、Windows服务器搭建,客户端创建
  6. XSS 平台搭建与优化(基于 xsser.me 源码)
  7. Android View的圆角和阴影(border and shadow)
  8. 校网助手APP lua源码
  9. web大学生个人网站大作业模板 ——大学生活记录个人网站模板(6个页面) HTML+CSS+JavaScript...
  10. 云时代数据科学平台--Sengee