一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务。n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间。

输入描述:

  输入包括两行: 第一行为整数n(1 ≤ n ≤ 50) 第二行为n个整数length[i](1024 ≤ length[i] ≤ 4194304),表示每个任务的长度为length[i]kb,每个数均为1024的倍数。

输出描述:

  输出一个整数,表示最少需要处理的时间

示例1

输入

5
3072 3072 7168 3072 1024

输出

9216

第一种方法(穷举法)

n = int(raw_input())
a = raw_input().strip().split()
a = [int(x)/1024 for x in a]
suma = sum(a)
x = {0:1}
for i in a:y = {}for j in x:if j+i not in x:y[j+i] = 1x.update(y)
res = suma
for i in x:res = min(res,max(i,suma-i))
print(res*1024)

代码中x的key记录了,从n个任务选取任意个任务,每种组合所要花费的时间。如果时间一样,只记录一次,这样就列出了所有的可能。最后遍历一遍,选出双核CPU处理完所有任务所需时间最少的组合

第二种方法(动态规划)

n = int(raw_input())
a = raw_input()
a = a.strip().split()
a = [int(x)/1024 for x in a]
suma = sum(a)dst = [[0]*(suma/2+1)]*(n+1)
def pack(i,rest):if i >= n:return 0if dst[i][rest]:return dst[i][rest]if a[i] <= rest:result = max(a[i]+pack(i+1,rest-a[i]),pack(i+1,rest))else:result = pack(i+1,rest)dst[i][rest] = resultreturn result
res = pack(0,suma/2)
print(max(res,suma-res)*1024)

借鉴动态规划——自顶向下的解法。

 

 

转载于:https://www.cnblogs.com/Peyton-Li/p/7545020.html

双核处理(动态规划)相关推荐

  1. dpresult在python中什么意思_动态规划(DP)的整理-Python描述

    今天整理了一下关于动态规划的内容,道理都知道,但是python来描述的方面参考较少,整理如下,希望对你有所帮助,实验代码均经过测试. 请先好好阅读如下内容--什么是动态规划? 摘录于<算法图解& ...

  2. 0/1背包问题——动态规划、回溯、分支限界法对比

    0/1背包问题--动态规划.回溯.分支限界法对比 2017.12.19 20:42:02 字数 3713 阅读 2820 目录 1.问题描述 1.1 问题描述 1.2 问题的数学表示(规划类问题,此种 ...

  3. 动态规划(DP)的整理-Python描述

    今天整理了一下关于动态规划的内容,道理都知道,但是python来描述的方面参考较少,整理如下,希望对你有所帮助,实验代码均经过测试. 请先好好阅读如下内容–什么是动态规划? 摘录于<算法图解&g ...

  4. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  5. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  6. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  7. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

  8. 2016.4.2 动态规划练习--讲课整理

    1.codevs1742 爬楼梯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿 ...

  9. 算法设计与分析第4章 动态规划(二)【DP序列问题】

    第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...

最新文章

  1. 如何创建并发布Google Earth KML 地标文件?
  2. 将Java向前推进? 一个定义。 一年回顾。
  3. RuoYi-Vue 部署 Linux环境 若依前后端分离项目(jar包+nginx 单机版本)
  4. java scrollpane放按钮_java – 如何在BoxLayout上放置scrollPane?
  5. 分布式数据库clickhouse、tidb、palo对比
  6. python3函数写文件路径时,怎么写文件路径
  7. 我们不生产代码,我们只是代码的搬运工
  8. JS代码简单一段即可破解QQ空间删除说说
  9. 用键盘输入一位整数,当输入1~7时,显示对应的英文星期名称的缩写。
  10. html p标签颜色代码,html里的颜色标签肿么写?
  11. 【解决】client does not support authentication转载的两种解法
  12. Html+Css+JavaScript基础知识点
  13. iQQ 基于WebQQ3.0协议Java开发 跨平台QQ客户端
  14. 初识3D Game——战地3,使命召唤8:现代战争3,Crysis 2:孤岛危机2
  15. Java8新特性学习(lambda,函数式接口,stream,Optional)
  16. 电信客户流失分析实战
  17. @你:Next Idea微信小程序开发大赛启动
  18. vue引入百度地图实现轨迹绘制
  19. Android中添加万普广告墙、推送广告等
  20. 扬长避短,做符合个性特质的事

热门文章

  1. 焦点分析 | 平头哥的首颗 AI 芯片对阿里云来说意味着什么?
  2. 南京大学人工智能学院院长周志华:培养有源头创新力的人才!
  3. 340亿美元买下红帽!IBM百年以来最大手笔,云市场翻身之战!
  4. NLP深度学习:近期趋势概述
  5. 重磅!Nature子刊发布稳定学习观点论文:建立因果推理和机器学习的共识基础...
  6. DeepMind新突破!首次用深度学习从第一性原理计算分子能量
  7. 【人工智能】人工智能革命与机遇
  8. 2018-2020年Gartner战略科技发展趋势一览!
  9. 中美首份8000字长文解析全球热点脑机接口(重磅干货)
  10. 英特尔10纳米处理器再度跳票,或收缩芯片代工业务