poj3469 Dual Core CPU——最小割

题目:http://poj.org/problem?id=3469

最小割水题(竟然没能1A)

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int const maxn=2e4+5,maxm=2e5+5,inf=0x3f3f3f3f;
int n,m,hd[maxn],d[maxn],ct=1,cur[maxn],ans;
queue<int>q;
struct N{
    int to,nxt,w;
    N(int t=0,int n=0,int w=0):to(t),nxt(n),w(w) {}
}ed[(maxn+maxm)<<2];
void add(int x,int y,int z)
{
    ed[++ct]=N(y,hd[x],z); hd[x]=ct;
    ed[++ct]=N(x,hd[y],0); hd[y]=ct;
}
bool bfs()
{
    while(q.size())q.pop();
    memset(d,0,sizeof d);
    q.push(0); d[0]=1;
    while(q.size())
    {
        int x=q.front(); q.pop();
        for(int i=hd[x],u;i;i=ed[i].nxt)
            if(!d[u=ed[i].to]&&ed[i].w)d[u]=d[x]+1,q.push(u);
    }
    return d[n+1];
}
int dfs(int x,int f)
{
    if(x==n+1)return f;
    int res=0;
    for(int &i=cur[x],u;i;i=ed[i].nxt)
    {
        if(d[u=ed[i].to]==d[x]+1&&ed[i].w)
        {
            int k=dfs(u,min(ed[i].w,f-res));//f-res!!!
            res+=k; ed[i].w-=k; ed[i^1].w+=k;
            if(res==f)return f;
        }
    }
    if(!res)d[x]=0;
    return res;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1,a,b;i<=n;i++)
    {
        scanf("%d%d",&a,&b);
        add(0,i,a); add(i,n+1,b);
    }
    for(int i=1,x,y,z;i<=m;i++)
    {
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z); add(y,x,z);
    }
    while(bfs())
    {
        memcpy(cur,hd,sizeof hd);
        ans+=dfs(0,inf);
    }
    printf("%d",ans);
    return 0;
}

 

转载于:https://www.cnblogs.com/Zinn/p/9280997.html

POJ-3469 Dual Core CPU最小割 Dual Core CPU 题目链接:Dual Core CPU 题意 思路 照书上的话来说,用最小的费用将对象分成两个集合的问题,常常可以转换成最小割问题,这道题就是一道典型的例子。 具体的还需要证明 记在核A上执行的模块集合是S,而在核B上执行的模块集合为T。考虑以模块为顶点,并且还有额外的源点s和汇点t的图。我们也记图s-t割所对应的包含s的顶点集合为S,包含t的集合为T,然后来考察他们... 阅读详情

相关推荐

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

POJ 3469->Dual Core CPU(最大流最小割问题)

描述: Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 18147   Accepted: 7833 Case Time Limit: 5000MS Description As more an

魔笛手的博客 476

基于MicroBlaze与LWIP的FPGA以太网通信实战指南

本文详细介绍了基于MicroBlaze软核处理器与LWIP协议栈的FPGA以太网通信实现方案。通过Vivado工具链配置硬件设计,结合LWIP轻量级TCP/IP协议栈优化,提供高效、低成本的嵌入式网络解决方案,适用于工业控制等场景。文章包含硬件设计、软件配置及常见问题排查等实战指南。

weixin_29290863的博客 501

poj 3469 Dual Core CPU(最小割)

Description As more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft Corporation, decided to update their famous product - SWODNIW. The routi

千里之行 始于足下 771

POJ 3469Dual Core CPU最小割

题目: 有两个CPU来处理 NNN 个机器,对于每个机器来说,在两个CPU上处理的费用分别是 AiAiAi 和 BiBiBi 。现在还有 mmm 对机器需要进行数据交换,每对机器的数据交换都有其对应的交换费用,但是如果这两台需要进行数据交换的机器是在相同的CPU上处理的,则不需要支付交换费用。问处理所有机器的最小花费。 思路: 看到了最小花费,因此很自然的想到了最小割模型,于是问题就变成了如何建...

lucius-liu.cn 1579

最小割POJ-3469 Dual Core CPU

Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K       Case Time Limit: 5000MS Description As more and more computers are equipped with dual core CPU, Setag

JSure的代码库 810

Poj 3469 Dual Core CPU最小割

Poj 3469 Dual Core CPU题目描述题解代码 题目描述 Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 28432 Description As more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft Corporation, de

weixin_43308078的博客 220

poj 3469 Dual Core CPU 最大流-最小割

题目:http://poj.org/problem?id=3469 题意:有双核处理器,有n个任务,给出每个任务在分别在两个处理核心上工作的花费,然后有m行,每行给出两个任务,如果两个任务不在同一个处理核心上工作,那么将有额外的花费。求最小花费 思路:碰到的第一题求最小割-最大流的题目,思路不是自己的。将两个CPU分别视为源点和汇点、模块视为顶点,则可以按照以下方式构图:对于第i个模块在每个C

弱智就要多努力 979

POJ 3469 Dual Core CPU最小割,建图)

最大流dinic算法,建图 题目意思: 双核计算机A,B,有n个模块,每个模块都要再CPU中运行,并且知道了每个模块在每个CPU上的运行时间, 如果它们运行在同一个cpu,就可以忽略共享数据的花费,否则需要额外的费用,求完成所有任务的最小花费; 本题要点: 1、最大流量=最小割容量 2、建图 建图:让两个CPU分别为图的源点s和汇点t,已知每个模块与两个CPU的运行时间Ai,Bi,则对于每个模块, 从s连向一条容量为Ai的边到这个模块,在从这个模块连一条容量为Bi的边到t;对于在不同模块运行的模块需要额外的

qq_38232157的博客 218

POJ 3469 Dual Core CPU最小割

Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 25064   Accepted: 10860 Case Time Limit: 5000MS Description As more and more computers

Mr_Treeeee的博客 627

POJ 3469Dual Core CPU最小割

【题意】 【分析】 【建图】 留着有空再写 【Mark】 数据较大,n<=20000。使用dinic的递归写法跑了7s+,非递归TLE.sap跑了2s+。 谁说非递归效率高? 1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> ...

dechi5213的博客 178

POJ 3469Dual Core CPU --最小割

【题目地址】点击打开链接 【分析】 这种题应该一看就是最小割的题目。 然后我们考虑这样建图: 1.S向每个任务连一条容量为A[i]的边。 2.每个任务向T连一条容量为B[i]的边。 3.如果输入u,v,w。那么u向v连容量w的边,v向u连容量w的边。 那么如果任务a,b是由不同的cpu完成的,即各自分属S集和T集。那么割边集必然包含连接a,b的边。 【代码】

Ciocio 905

Dual Core CPU POJ - 3469 经典最小割

As more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft Corporation, decided to update their famous product - SWODNIW. The routine consists of

liluoyu_1016的博客 423

POJ 3469 Dual Core CPU 最小割问题

链接:http://poj.org/problem?id=3469 题意:给出多个任务在两个处理器分别处理时的花费,给出一些条件有些任务在不同的处理器处理会有额外的花费,问最小的花费是多少。 思路:最小割问题。网络流算法不难,难的是建图。看到将图分成两部分的问题就要向最小割上去想。 本题建图: 1.源点和汇点分别是两个核。 2.弧长是模块在两个核各自的花费。 3

看曙光 1360

poj 3469 Dual Core CPU最小割模型)

ACM确实是需要毅力的东西,最近刷网络流,竭尽全力的一个ac。。。 把题目中的模型转换成最小割模型,然后就是模版了 为什么是最小割?因为显然任意一个割中模块只能多放不能少,而满足条件的一定是一个割,所以满足条件的就是极小割,所有极小割也满足条件,最小割是极小割,所以花费最小的就是最小割 但是却百思不得其解的tle了,纠结,死都发现不了前几天自己写的那个模版里有什么问题,多路增广啊,gap优化

量子流逝 974

POJ3469 Dual Core CPU 【最大流最小割

Language:DefaultDual Core CPU Time Limit: 15000MSMemory Limit: 131072KTotal Submissions: 24695Accepted: 10690Case Time Limit: 5000MSDescriptionAs more and more computers are equipped with dual core CPU

LuRiCheng的博客 539

poj 3469 Dual Core CPU ( 最小割

题意: 双核CPU,n个模块,每个模块必须运行在某个CPU核心上,每个模块在cpu单核的消耗A和B,M对模块要共享数据,如果在同一个核心上不用消耗,否则需要耗费。安排N个模块,使得总耗费最小 思路: 将两个cpu核心看成源点和汇点,其他模块分别与源点汇点连线(表示每个模块可以在任意cpu上运行),m对模块分别连双向边,要使得模块只能在一个cpu上运行,就是找到一个割,源点和汇点必

Dizzy的专栏 265

poj 3469 Dual Core CPU最小割

题目链接:哆啦A梦传送门 题意: 有n个任务,两个机器A和B,每个任务要么在A上完成,要么在B上完成,而且知道每个任务在A和B机器上完成所需要的费用。然后再给m行,每行a,b,w三个数字。表示如果a任务和b任务不在同一个机器上工作的话,需要额外花费w。现在要求出完成所有任务最小的花费是多少。 题解:我们将A B分隔开建立,源点到任务i连边,权值为Ai,任务i与汇点连边,权值为Bi。对于...

Jiandong 252

POJ3469 Dual Core CPU最小割

形象生动的最小割。。 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include<algorithm> 5 using namespace std; 6 #define INF (1<<30) 7 #defi...

dengliugong3918的博客 175

Dual Core CPU POJ - 3469 最小割(经典网络流)

传送门:POJ3469 题意:  要在核A和核B组成的双核CPU上运行N个模块,模块i在核A上执行的花费为Ai,在核B上执行的花费为Bi。有M个相互之间需要进行数据交换的模块组合(ai,bi),如果这两个模块在同一个核上执行则没有额外花费,否则会产生wi的花费,请计算执行所有模块的最小花费。 思路:在这里只说建图方法,更多解释详见挑战程序设计第二版P236。 1.新建源点和汇点,所有源点向所

WA是一笔财富 515

poj 3469 Dual Core CPU——最小割

题目:http://poj.org/problem?id=3469 最小割裸题。 那个限制就是在 i、j 之间连双向边。 根据本题能引出网络流中二元关系的种种。 别忘了写 if ( x==n+1 ) return flow ; ! #include<iostream> #include<cstdio> #include<cstring> #i...

weixin_30745641的博客 111
上一篇: bzoj2744 [HEOI2012]朋友圈——二分图匹配
下一篇: bzoj1023 [SHOI2008]cactus仙人掌图 & poj3567 Cactus Reloaded——求仙人掌直径
aodan5477
博客等级 码龄11年 2粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值