啊啊啊,假的题吧!!!我用的当前弧优化T了6个点,其他人不用优化AC!!!震惊!!!当前弧优化是假的吧!!!

到现在我也没调出来。。。大家帮我看看为啥70.。。。

来讲一下这个题的思路,就是设一个源点,向每一个任务建边,边权为任务价值。然后任务向机器建边,边权为租金,最后机器向汇点建边,边权为购买的费用。

但这个题题意不明确,好像租完一个机器,还要花费购买的钱。

题干:

Description
有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成。 现在给出这些参数,求最大利润
Input
第一行给出 N,M(<=N<=,<=M<=) 下面将有N块数据,每块数据第一行给出完成这个任务能赚到的钱(其在[,])及有多少道工序 接下来若干行每行两个数,分别描述完成工序所需要的机器编号及租用它的费用(其在[,]) 最后M行,每行给出购买机器的费用(其在[,])
Output
最大利润
Sample Input Sample Output HINT Source

70分代码(欢迎大佬们指出我的错误啊)

#include<iostream>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<queue>
#include<algorithm>
#include<cstring>
using namespace std;
#define duke(i,a,n) for(int i = a;i <= n;i++)
#define lv(i,a,n) for(int i = a;i >= n;i--)
#define clean(a) memset(a,0,sizeof(a))
const int INF = << ;
typedef long long ll;
typedef double db;
template <class T>
void read(T &x)
{
char c;
bool op = ;
while(c = getchar(), c < '' || c > '')
if(c == '-') op = ;
x = c - '';
while(c = getchar(), c >= '' && c <= '')
x = x * + c - '';
if(op) x = -x;
}
template <class T>
void write(T x)
{
if(x < ) putchar('-'), x = -x;
if(x >= ) write(x / );
putchar('' + x % );
}
struct node{
int x,y,w,next,other;
}a[];
int len = ,last[],n,m,st = ,ed;
void add(int x,int y,int w)
{
int k1,k2;
a[++len].next = last[x]; k1 = len;
a[len].x = x; a[len].y = y;
a[len].w = w; last[x] = len;
a[++len].next = last[y]; k2 = len;
a[len].x = y; a[len].y = x;
a[len].w = ; last[y] = len;
a[k1].other = k2; a[k2].other = k1;
}
int qu[],h[],ans = ;
int cur[];
bool bfs()
{
clean(h);
int head = ,tail = ;
qu[head] = st;
h[st] = ;
while(head != tail)
{
int x = qu[head];
// cout<<x<<endl;
for(int k = last[x];k;k = a[k].next)
{
int y = a[k].y;
if(h[y] == && a[k].w > )
{
h[y] = h[x] + ;
qu[tail++] = y;
}
}
head++;
}
if(h[ed] > )
return true;
else
return false;
}
int dfs(int x,int f)
{
if(x == ed)
return f;
int s = ,t;
for(int k = cur[x];k;k = a[k].next,cur[x] = k)
{
int y = a[k].y;
if(s < f && h[y] == (h[x] + ) && a[k].w > )
{
t = dfs(y,min(a[k].w,f - s));
s += t;
a[k].w -= t;
a[a[k].other].w += t;
}
}
if(s == )
h[x] = ;
return s;
}
int main()
{
read(n);read(m);
ed = n + m + ;
int p,q,e,r;
duke(i,,n)
{
read(p);
ans += p;
add(st,i,p);
read(q);
duke(j,,q)
{
read(e);read(r);
add(i,e + n,r);
}
}
duke(i,,m)
{
read(r);
add(n + i,ed,r);
}
while(bfs())
{
duke(i,,n + m + )
cur[i] = last[i];
ans -= dfs(,INF);
// cout<<ans<<endl;
}
write(ans);
return ;
}
/*
2 3
100 2
1 30
2 20
100 2
1 40
3 80
50
80
110
*/

B1391 [Ceoi2008]order 最大权闭合图 最小割的更多相关文章

  1. POJ 2987 Firing【最大权闭合图-最小割】

    题意:给出一个有向图,选择一个点,则要选择它的可以到达的所有节点.选择每个点有各自的利益或损失.求最大化的利益,以及此时选择人数的最小值. 算法:构造源点s汇点t,从s到每个正数点建边,容量为利益.每 ...

  2. [luoguP2762] 太空飞行计划问题(最大权闭合图—最小割—最大流)

    传送门 如果将每一个实验和其所对的仪器连一条有向边,那么原图就是一个dag图(有向无环) 每一个点都有一个点权,实验为收益(正数),仪器为花费(负数). 那么接下来可以引出闭合图的概念了. 闭合图是原 ...

  3. 洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)

    https://www.luogu.org/problemnew/show/P4174 最大权闭合子图的模板 每个通讯站建一个点,点权为-Pi:每个用户建一个点,点权为Ci,分别向Ai和Bi对应的点连 ...

  4. BZOJ 1565 / P2805 [NOI2009]植物大战僵尸 (最大权闭合子图 最小割)

    题意 自己看吧 BZOJ传送门 分析 - 这道题其实就是一些点,存在一些二元限制条件,即如果要选uuu则必须选vvv.求得到的权值最大是多少. 建一个图,如果选uuu必须选vvv,则uuu向vvv连边 ...

  5. 【最大权闭合子图 最小割】bzoj1497: [NOI2006]最大获利

    最大权闭合子图的模型:今天才发现dinic板子是一直挂的…… Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在 ...

  6. 【最大权闭合子图/最小割】BZOJ3438-小M的作物【待填】

    [题目大意] 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号),现在,第i种作物种植在A中种植 ...

  7. bzoj 1497 [NOI2006]最大获利【最大权闭合子图+最小割】

    不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征--限制,实际上还是有的. 我们需要把中转站看成负权点,把p看成点权,把客户看成 ...

  8. 洛谷 P2762 太空飞行计划问题 【最大权闭合子图+最小割】

    --一道难在读入的题. 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了. 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的 ...

  9. Bzoj 1391: [Ceoi2008]order 网络流,最大权闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1105  Solved: 331[Submit][Statu ...

随机推荐

  1. 影响ERP成功实施的因素及实施方法

    一.影响ERP实施的因素 1.企业自身管理和认识上的问题.在ERP实施过程中没有用变革管理的理念和方法来策划和管理ERP的实施是导致ERP失败的主要原因. ERP作为一种管理工具他的实施本身就是操作手 ...

  2. spring编程框架

    spring boot, spring data, spring framework spring / spring boot @Profile('prod'|'dev'|'other')(伴随@Be ...

  3. win10 打开chm文件内容空白如何解决

    win10 打开chm文件内容空白如何解决 .CHM文件是非常常见的帮助文件格式.由于其便携性,很多小说或杂志也会采用chm格式.win7/win8.1/win10系统,由于采用了UAC,致使原本在x ...

  4. java编码终极探秘

    首先要明白,java中string字符串都是unicode码保存的,只不过显示的时候会根据一定的规则,比如GBK或者是UTF-8去对照表中查找进行显示. 之所以会乱码就是因为使用错了编码方式. 数据是 ...

  5. JavaScript ES 数组系列

    正文从这开始- ECMAScript 5.1 中提供的数组方法 其中部分方法,ECMAScript 3 就出现了,但是本文不再细分. ECMA-262/5.1 规范:https://www.ecma- ...

  6. CStatic设置位图

    CStatic 用于显示位图 如果要显示图标,则必须要设置窗口属性为 SS_BITMAP 和 SS_CENTERIMAGE,实例代码如下: //获得指向静态控件的指针 CStatic *pStatic ...

  7. spring IOC bean中注入集合

    建立一个实体 package com.java.test4; import java.util.*; /** * @author nidegui * @create 2019-06-22 14:45 ...

  8. profiler-gpu分析记录

    查看 Android 手机芯片信息下面以 夜神模拟器为例 D:\cmderλ adb devices # 1. 列出安卓设备List of devices attached127.0.0.1:6200 ...

  9. 7-13 航空公司VIP客户查询 (25 分)

    题意: 思路: 读完题目之后的第一思路就是用map将客户的id(string类型)与里程road(int类型)形成映射,然后直接用id查找添加里程或输出里程.但是400ms的限制妥妥的超时了.然后意识 ...

  10. Spring MVC 笔记 概述

    学习笔记 模型:封装装程序数据 视图:渲染模型数据,一般来说就是输出HTML 控制:处理请求,构建模型并将其传递给视图进行渲染 以上三者均围绕DispatcherServlet设计,它处理所有的HTT ...