1280: Emmy卖猪pigs

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 279  Solved: 182
[Submit][Status][Discuss]

Description

Emmy在一个养猪场工作。这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙。顾客会到养猪场来买猪,一个接着一个。每一位顾客都会有一些猪圈的钥匙,他们会将这些猪圈打开并买走固定数目的猪。 所有顾客有的钥匙和他们需要买猪的数量在事先都告诉了Emmy,于是Emmy要订一个计划,使得卖出去的猪最多。 买卖的过程是这样的:一个顾客前来,并打开所有他可以打开的猪圈。然后Emmy从这些猪圈里牵出固定数目的猪卖给顾客(最多只能和顾客需要数相等),并可以重新安排这些开着的猪圈中的猪。 每个猪圈可以存放任意数目的猪。 写一个程序,使得Emmy能够卖出去尽可能多的猪。

Input

第一行有两个整数:M和N,表示猪圈数和顾客数。 第二行有M个整数,表示每个猪圈初始时有多少猪。 接下来的N行按照前来的次序描述了每一个顾客,每行的格式如下: A K1 K2…KA B A表示该顾客拥有的钥匙数,K1...KA表示每个钥匙所对应的猪圈,B表示该顾客需要购买的猪的数目。

Output

仅包含一个整数,即最多能卖出去的猪的数目。

Sample Input

3 3
3 1 10
2 1 2 2
2 1 3 3
1 2 6

Sample Output

7

HINT

1 ≤ M ≤ 1000
1 ≤ N ≤ 100

【网络流建模汇总T1】

/**************************************************************
Problem: 1280
User: gryz2016
Language: C++
Result: Accepted
Time:0 ms
Memory:2472 kb
****************************************************************/ //S向第一个打开某猪圈的人连边,容量为这个猪圈里猪的数量
//后边的打开这个猪圈的人从第一个打开这个猪圈的人那里连边过来,容量为INF
//因为猪圈里的猪是可以随意调动的嘛
//然后更新打开这个猪圈的人
//不更新不是不对,但是会慢
//然后这个人向汇点连边,容量为他要买的猪的数量 //画个图会很清晰。 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std; int n,m;
int head[],from[],num_edge;
int last[];
int w[];
int dep[];
struct Edge
{
int v,flow,nxt;
}edge[]; inline int read()
{
char c=getchar();int num=,f=;
for(;!isdigit(c);c=getchar())
f=c=='-'?-:f;
for(;isdigit(c);c=getchar())
num=num*+c-'';
return num*f;
} inline void add_edge(int u,int v,int w)
{
edge[++num_edge].v=v;
edge[num_edge].flow=w;
edge[num_edge].nxt=head[u];
head[u]=num_edge;
} inline bool bfs()
{
for(int i=;i<=n;++i)
from[i]=head[i],dep[i]=;
queue<int> que;
int now,v;
dep[]=;
que.push();
while(!que.empty())
{
now=que.front(),que.pop();
for(int i=head[now];i;i=edge[i].nxt)
{
v=edge[i].v;
if(!dep[v]&&edge[i].flow)
{
dep[v]=dep[now]+;
if(v==n)
return ;
que.push(v);
}
}
}
return ;
} int dfs(int now,int flow)
{
if(now==n||!flow)
return flow;
int outflow=,v,tmp;
for(int &i=from[now];i;i=edge[i].nxt)
{
v=edge[i].v;
if(dep[v]!=dep[now]+)
continue;
tmp=dfs(v,min(flow,edge[i].flow));
flow-=tmp;
outflow+=tmp;
edge[i].flow-=tmp;
edge[i^].flow+=tmp;
if(!flow)
return outflow;
}
dep[now]=;
return outflow;
} int main()
{
num_edge=;
m=read(),n=read();
for(int i=;i<=m;++i)
w[i]=read();
int a,b;
for(int i=;i<=n;++i)
{
a=read();
while(a--)
{
b=read();
if(!last[b]) //这个猪圈是第一次被打开
add_edge(,i,w[b]),
add_edge(i,,);
else
add_edge(last[b],i,0x7fffffff), //向上一个打开这个猪圈的人连边
add_edge(i,last[b],);
last[b]=i;
}
b=read();
add_edge(i,n+,b);
add_edge(n+,i,);
}
++n;
int ans=;
while(bfs())
ans+=dfs(,0x7fffffff);
printf("%d",ans);
return ;
}

Bzoj 1280: Emmy卖猪pigs的更多相关文章

  1. BZOJ1280: Emmy卖猪pigs

    BZOJ1280: Emmy卖猪pigs https://lydsy.com/JudgeOnline/problem.php?id=1280 分析: 这题感觉还好,因为是有时间顺序,所以拆点做最大流即 ...

  2. 【BZOJ1280】Emmy卖猪pigs 最大流

    [BZOJ1280]Emmy卖猪pigs Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪 ...

  3. [BZOJ1280][POJ1149]Emmy卖猪pigs

    [BZOJ1280][POJ1149]Emmy卖猪pigs 试题描述 Emmy在一个养猪场工作.这个养猪场有 \(M\) 个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位 ...

  4. BZOJ1280 Emmy卖猪pigs 网络流

    正解:网络流 解题报告: 传送门! 我网络流的基础题都还麻油做完就来做这个了,,,wsl,,, 首先想下最基础的构图方法 不难想到把猪圈和顾客分别当做节点,然后新建一个源点和汇点 然后考虑怎么连边,首 ...

  5. Pku1149 PIGS 卖猪

    题目链接:ヾ(≧∇≦*)ゝ Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙. 顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪圈的钥匙,他 ...

  6. 洛谷 P2483 BZOJ 1975 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  7. bzoj 1975 [Sdoi2010]魔法猪学院(k短路)

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  8. Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1357  Solved: 446[Submit][Statu ...

  9. BZOJ 1951: [Sdoi2010]古代猪文( 数论 )

    显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...

随机推荐

  1. Smart3D飞控&地方坐标系

    资源 ContextCapture(原Smart3D)教程 | Wish3D 航测数据处理答疑55问!涉及CC.Pix4D.Photoscan.EPS等常见软件问题_云进行 飞控软件 Smart3D常 ...

  2. 在vue中使用swiper组件

    第一步:在终端的项目根目录下载安装swiper: cnpm/npm install vue-awesome-swiper --save; 第二步:在程序入口文件main.js中引用: import V ...

  3. Scratch(二)来不及解释了,马上开始编程游戏

    来来来,上一期你们都经过了”HelloWorld”神咒的加持,已入编程大门,我们今天就开始一边做游戏,一边熟悉Scratch. “我只是切出去抢了个红包,一回来就到了编程游戏的环节了?” 对,你没跑错 ...

  4. SAS学习笔记56 ODS ESCAPECHAR

    这种内嵌格式独立于style型和table型,它既可以结合二者使用,也可以独立使用.它主要通过下列语句的格式形式来进行调用: ODS ESCAPECHAR ‘^’; 上述符号’^’表示触发条件,如果碰 ...

  5. Kubernetes 常见错误

    OOMKilled: Pod 的内存使用超出了 resources.limits 中的限制,被强制杀死. CrashLoopBackoff: Pod 进入 崩溃-重启循环,重启间隔时间从 10 20 ...

  6. 使用Feign通过服务名调用服务,找不到服务

    fegineureka 报错环境: eureka注册中心在远程服务器上 本地服务注册到远程的eureka注册中心 本地服务通过Fegin组件+服务名调用服务 报错时,注册中心的情况: Applicat ...

  7. 关于MQ的几件小事(三)如何保证消息不重复消费

    1.幂等性 幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或 ...

  8. How to : SAP PI Cache Refresh

    Requirement : Identify various tools/resources available to perform SAP PI Cache refresh . Please no ...

  9. PimaIndiansdiabetes-数据预处理实验(一)

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10859517.html 链接:https:// ...

  10. Linux文件(夹)属性

    ll  或者 ls -lh 查看文件属性: