双核 CPU
双核 CPU
时间限制: 1 Sec 内存限制: 128 MB
题目描述
由于越来越多的计算机配置了双核 CPU,TinySoft 公司的首席技术官员,SetagLilb,决定升级他们的产品-SWODNIW。
SWODNIW 包含了 N 个模块,每个模块必须运行在某个 CPU 中。每个模块在每个 CPU 中运行的耗费已经被估算出来了,设为 Ai 和 Bi。同时,M 对模块之间需要共享数据,如果他们运行在同一个 CPU 中,共享数据的耗费可以忽略不计,否则,还需要额外的费用。你必须很好地安排这 N 个模块,使得总耗费最小。
输入
测试数据的第 1 行为两个整数N 和 M,1≤N≤20000,1≤M≤200000。接下来有 N 行,每行为两个整数 Ai 和 Bi。接下来有 M 行,每行为 3 个整数 a, b, w,表示 a 模块和 b 模块如果不是在同一个 CPU 中运行,则需要花费额外的 w 耗费来共享数据。
输出
输出一个整数,为最小耗费。
样例输入
样例输出
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<ctime>
#include<vector>
using namespace std;
int n,m;
int src,des;
struct node
{
int next,to,cap;
}edge[];
int head[],size=;
void putin(int from,int to,int cap)
{
size++;
edge[size].to=to;
edge[size].next=head[from];
edge[size].cap=cap;
head[from]=size;
}
void in(int from,int to,int cap)
{
putin(from,to,cap);
putin(to,from,);
}
int dist[],numbs[];
void bfs(int src,int des)
{
int i,j;
queue<int>mem;
mem.push(des);
dist[des]=;numbs[]++;
while(!mem.empty())
{
int x=mem.front();mem.pop();
for(i=head[x];i!=-;i=edge[i].next)
{
int y=edge[i].to;
if(edge[i].cap==&&dist[y]==&&y!=des)
{
dist[y]=dist[x]+;
numbs[dist[y]]++;
mem.push(y);
}
}
}
return;
}
int dfs(int s,int flow,int des)
{
if(s==des)return flow;
int i,mindist=n+,low=;
for(i=head[s];i!=-;i=edge[i].next)
{
int y=edge[i].to;
if(edge[i].cap)
{
if(dist[y]==dist[s]-)
{
int t=dfs(edge[i].to,min(flow-low,edge[i].cap),des);
edge[i].cap-=t;
edge[i^].cap+=t;
low+=t;
if(dist[src]>=n+)return low;
if(low==flow)break;
}
mindist=min(mindist,dist[y]+);
}
}
if(!low)
{
if(!(--numbs[dist[s]]))dist[src]=n+;
++numbs[dist[s]=mindist];
}
return low;
}
int ISAP(int src,int des)
{
int ans=;
bfs(src,des);
while(dist[src]<n+)
ans+=dfs(src,2e8,des);
return ans;
}
int main()
{
int i,j;
scanf("%d%d",&n,&m);
memset(head,-,sizeof(head));
src=;des=n+;
for(i=;i<=n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
in(src,i,a);
in(i,des,b);
}
for(i=;i<=m;i++)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
in(a,b,c);
in(b,a,c);
}
int maxflow=ISAP(src,des);
cout<<maxflow<<endl;
return ;
}
双核 CPU的更多相关文章
- 【转帖】处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU?
处理器史话 | 这张漫画告诉你,为什么双核CPU能打败四核CPU? https://www.eefocus.com/mcu-dsp/371324 2016-10-28 10:28 作者:付丽华预计 9 ...
- 双核CPU,跑程序会报rcu_sched_state detected stalls on CPUs/tasks 错误
有一份SDK,之前跑在PPC405EX上没问题。最近换平台,CPU使用了PowerPC的P1020,双核。linux版本也升级到了3.0.48版本。升级之后出现了一个问题:SDK里面的程序跑一段时间之 ...
- debian下配置双核cpu
----------------------------文:jiqing(吉庆) http://hi.baidu.com/jiqing0925email: jiqingwu@gmail.comdate ...
- Linux资源控制-CPU和内存
主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的. Linux系统中有多 ...
- linux内核调度算法(2)--CPU时间片如何分配 转!
http://blog.csdn.net/russell_tao/article/details/7103012 内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有 ...
- [转]不正当使用HashMap导致cpu 100%的问题追究
以前项目中遇到类似业务,但使用的是CurrentHashMap,看到这篇文章,转载记录,警示自己. 以下内容转自: 转载自并发编程网 – ifeve.com(http://ifeve.com/hash ...
- cpu,内存,虚拟内存,硬盘,缓存之间是什么关系??
1.CPU即中央处理器,是英语“Central Processing Unit”的缩写.CPU从内存或缓存中取出指令,放入指令寄存器,并对指令译码分解成一系列的微操作,然后发出各种控制命令,执行微操作 ...
- 差之毫厘谬之千里!带你认识CPU后缀含义
intel的几代CPU中,后缀字母主要有以下几种: M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器. U:笔记本专用低电压CPU,一般为双核, ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位 置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星 ...
随机推荐
- Ionic2 + Angular4 + JSSDK开发中的若干问题汇总
前景 目前微信公众号程序开发已经相当火热,客户要求自己的系统有一个公众号,已经是一个很常见的需要. 使用公众号可以很方便的便于项目干系人查看信息和进行互动,还可以很方便录入一些电脑端不便于录入的数据, ...
- Docker学习总结(一)
<认识Docker> 不定期更新~~~~~~~ 历史区别: 13年之前:网络大多使用"协议栈堆叠"的形式进行开发,需要部署单一专有的服务器进行操作.包括(中间件,运行时 ...
- openlayers3应用一:显示百度地图
在项目中使用百度地图,最直接的方式是使用百度api,但是使用百度api需要申请key,并且某些功能调用有次数限制. 本文讲述在openlayers3中使用百度地图的方法.调用百度地图,也是经过了几番周 ...
- struts2总体介绍
这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高.当今比较流行的开源框架: 关注数据流程的MVC框架 (Struts1/2, WebWork, Spring MV ...
- tomcat流程原理解析
tomcat的启动是通过Bootstrap类的main方法(tomcat6开始也可以直接通过Catlina的main启动) Bootstrap的启动 Bootstrap的main方法先new了一个自己 ...
- Linux 通过端口转发来访问内网服务
Rinetd是为在一个Unix和Linux操作系统中为重定向传输控制协议(TCP)连接的一个工具,系统内部服务受系统网服限制外部无法访问,需要通过rinetd映射将内网服务转发出来. 1. 下载解压 ...
- Norm 数据库操作竟然可以如此简单
github地址,https://github.com/xcr1234/norm/欢迎各位大神fork&交流! Norm Norm是一套微型的JAVA数据库ORM库,提供了简单高效的 API, ...
- (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-2
8.1.2 Protobuf编解码开发 Protobuf的类库使用比较简单,下面我们就通过对SubscrjbeReqProto进行编解码来介绍Protobuf的使用. 8-1 Protob ...
- 关于EF中直接执行sql语句的参数化问题
某天 , 在review项目中代码的时候, 发现有哥们直接通过 Database.ExecuteSqlCommand("select * from order_info where com ...
- data.table包简介
data.table包主要特色是:设置keys.快速分组和滚得时序的快速合并.data.table主要通过二元检索法大大提高数据操作的效率,同时它也兼容适用于data.frame的向量检索法. req ...