双核处理

  一种双核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()
a = a.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] = 1
    x.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 0
    if 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] = result
    return result
res = pack(0,suma/2)
print(max(res,suma-res)*1024)

借鉴动态规划——01背包问题的解法。

 
 
				
时间: 2024-09-29 10:27:57

双核处理的相关文章

EVC在双核PC上调试速度慢的原因

以前使用单核PC,EVC+SP4使用模拟器进行调试,速度还可以. 但是当PC换成双核时,发现使用模拟器进行调试,速度还慢,让人无法接受! 记得以前在网上看到过此问题,是双核CPU引起的.所以: 打开“任务管理器” -> 选择 模拟器的进程名点击右键,选择“关系设置”,只勾上一个CPU. 终止当前调试,重新开始.发现单步调试速度正常! 还有一种可能:改成KITL的连接方式才正常调试的. 最后建议如果能换 VS 系统的工具,如 VS2005/VS2008,一定要换哦!

[工作]双核系统struts-config.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <

网易--双核处理器

一种双核CPU的两个核能够同时的处理任务,现在有n个已知数据量的任务需要交给CPU处理,假设已知CPU的每个核1秒可以处理1kb,每个核同时只能处理一项任务.n个任务可以按照任意顺序放入CPU进行处理,现在需要设计一个方案让CPU处理完这批任务所需的时间最少,求这个最小的时间. 输入描述: 输入包括两行: 第一行为整数n(1 ≤ n ≤ 50) 第二行为n个整数length[i](1024 ≤ length[i] ≤ 4194304),表示每个任务的长度为length[i]kb,每个数均为102

Linux检查双核(及多核)CPU信息

1. 可以从 /proc/cpuinfo 中获取CPU的一些信息 [[email protected] dev]# cat /proc/cpuinfo processor       : 0                     -- 逻辑CPU id vendor_id       : GenuineIntel cpu family      : 6 model           : 26 model name      : Intel(R) Xeon(R) CPU           E

基于TI Davinci架构的多核/双核开发高速扫盲(以OMAP L138为例),dm8168多核开发參考以及达芬奇系列资料user guide整理

基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门 原文转自http://blog.csdn.net/wangpengqi/article/details/8115614 感谢wangpengqi的共享. 一.简单介绍 TI的达芬奇架构嵌入式应用处理器使用DSP与ARM结合的非对称多核结构,当然如今也有管脚全兼容的单核.本文要介绍的就是当中的一款低功耗处理器OMAP L138. OMAP L138包含一个主频300M的ARM9处理器内核和一个300M的C6748DSP内核

如何让双核浏览器默认选择 WebKit 内核渲染自己开发的网页

我们可以使用标签来指定适合自己网站的渲染内核名称,当双核浏览器访问本网页时,就会根据我们的指示,选择我们指定的渲染内核来处理网页.若页面需默认用极速核,增加标签: <meta name="renderer" content="webkit"> 若页面需默认用ie兼容内核,增加标签: <meta name="renderer" content="ie-comp"> 若页面需默认用ie标准内核,增加标签:

LPC43xx双核笔记

简介本页提供了一些使用LPC43xx器件双核特性的基本信息.此页面上的信息和专题使用Keil uVision4工具,以双核工程的使用来演示.该工程初始化两个内核以运行FreeRTOS,并采用三色LED指示M0和M4内核的运行,以及双核处理器之间的通信.该项目把重点放在双核工程的细节上,力求基础和简单.可执行映像的布局和内存使用共享外设和内存资源驱动程序初始化代码通过共享内存和中断事件进行处理器间通信双核调试潜在问题和注意事项 本工程做什么本工程为M4内核创建了一个可引导映像,该映像加载.设置和启

香蕉派 BPI-M1+ 双核开源硬件单板计算机

香蕉派 BPI-M1+ 开源硬件开发板 深圳市源创通信技术有限公司公司 http://www.sinovoip.com.cn/cp_view.asp?id=562 产品介绍 Banana PI BPI-M1+是一款高性能双核开源硬件单板计算机,Banana PI BPI-M1+是一款比树莓派更强悍的双核Android4.4与Linux产品. Banana PI BPI-M1+兼容性强大,可以跑android系统,Debian linux,Ubuntu linux, Raspberry Pi系统

flex与相对定位在国内双核浏览器极速模式下的兼容性问题

---恢复内容开始--- 览器兼容性问题是前端的一个重要部分. 在国内的浏览器中,360浏览器,QQ浏览器等绝大部分都是双核浏览器.双核浏览器即拥有IE兼容内核和非IE极速内核两个内核,分别对应兼容模式和极速模式.兼容模式时使用IE内核,极速模式采用webkit内核.而目前大部分网站为了性能和用户体验,默认使用极速模式.在极速模式出现问题时,使用兼容模式. 虽然极速模式是使用的webkit内核,但是浏览器的表现却还是有一定差异.平时使用Chrome调试,在极速模式下却表现的不正常. 好,进入正题