PIGS (网络流) gzoi

1011 - 网络流 - PIGS(POJ1149) 传送门   分析 好生优秀的一道建模题 一个人打开了某几个猪圈,就相当于在这个时间段把这些猪圈给“合并” 了。 然后后面有人如果要打开其中的某一个,只用找到合并的这个点,然后 连一条边即可,相当于里面的猪都可以被调换过来。 对于每个猪圈维护 lasti,表示最后访问的时间,然后每次连边接到 last, 再把 last 更新即可。 但实际上并不需要每次合并都新建一个点,直接合并到顾客身上就... 阅读详情

广州的同学看这里:

http://www.gdgzoi.com/JudgeOnline/problem.php?cid=1045&pid=5 

 

Description

Mirko在一家大型养猪场工作,这家养猪场有M间可上锁的猪舍,但Mirko无法对任何一间猪舍上锁,因为他没钥匙。顾客一个接一个地到养猪场来,每个人都有一些猪舍的钥匙,他们要来买一定数量的猪。

每天早晨Mirko 所关心的数据是这一天要来养猪场的顾客,以便Mirko做好销售计划,给出要卖的猪的最大数字。

确切地讲,过程如下:顾客到养猪场,打开所有他有钥匙的猪舍,Mirko从被打开的猪舍里卖一定数量的猪给顾客,并且,如果Mirko需要,他在被打开的猪舍中重新分配剩余的猪。

在每间猪舍中猪的数量没有限制。

请编写程序,给出在一天中,Mirko可以卖出的猪的最大数量。

输入

输入的第一行给出两个整数M和N,1<= M <= 1000,1<=N<=100,分别是猪舍的数量和顾客的数量。猪舍编号从1到M,顾客编号从1到N。

下一行给出M个整数,表示每间猪舍在初始时猪的数量。每间猪舍里猪的数量大于等于0,小于等于1000。

然后的N行按如下形式给出顾客的记录(第i个顾客的记录在第(i+2)行):

A K1 K2 ... KA B 表示顾客拥有的猪舍的钥匙编号为K1,K2,... ,KA(按非递减序排列),并且要买B头猪。数字A和B可以为0。

输出

输出的第一行且唯一的一航给出要卖猪的头数。

样例输入

样例输出

3 3

3 1 10

2 1 2 2

2 1 3 3

1 2 6

7

 

这道题目建图不会很困难,就是有时会想不到

1.要注意顾客是一个接一个的到来的,所以前面的顾客一定要对后面的顾客有影响。

2.我们把一个一个顾客一个接一个加入图中,也猪舍建立联系:

  (1) 若该猪舍没有被前面的人打开过,则直接与超源点连接,容量为猪舍中猪的数量。

   (2)否则,则找到最近一次打开那个猪舍的人连接,容量为INF。

3.没个顾客与超汇点连接,容量为他需要的猪的数量。

下面有一个图(样例图):

有没有发现每个点都特别有层次感:因为后面的顾客是直接受前面顾客的影响的。

 

接下来就是贴代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define maxn 1005
#define INF 10000005
using namespace std;
struct Edge{
    int from,to,cap,flow;
    Edge(int u,int v,int c,int f) :from(u),to(v),cap(c),flow(f) {}
};
vector<Edge> edges;
vector<int> G[maxn];
int a[maxn];
int p[maxn];
int n,m,pig[maxn];
int flag[maxn];//注意这个flag,它记录打开猪舍的最新的顾客以及该猪舍是否被打开过;
 void AddEdge(int from,int to,int cap) {
     edges.push_back(Edge(from,to,cap,0));
     edges.push_back(Edge(to,from,0,0));
     int num=edges.size();
     G[from].push_back(num-2);
     G[to].push_back(num-1);
 }
  
 int Maxflow(int s,int t) {
     int flow=0;
     for(;;) {
         memset(a,0,sizeof(a));
         queue<int > Q;
         Q.push(s);
         a[s]=INF;
         while(!Q.empty()) {
             int x=Q.front(); Q.pop();
             for(unsigned int i=0;i<G[x].size();i++) {
                 Edge& e=edges[G[x][i]];
             if(!a[e.to] && e.cap>e.flow){
                 p[e.to]=G[x][i];
                 a[e.to]=min(a[x],e.cap-e.flow);
                 Q.push(e.to);
             }
         }
         if(a[t]) break;
         }
      if(!a[t]) break;
          for(int u=t;u!=s;u=edges[p[u]].from) {
              edges[p[u]].flow+=a[t];
              edges[p[u]^1].flow-=a[t];
          }
          flow+=a[t];
      }
      return flow;
  }
   //模板
int main()
  {std::ios::sync_with_stdio(false);
      cin>>m>>n;
      for(int i=1;i<=m;i++)
          cin>>pig[i];
      int k,exp;
      for(int i=1;i<=n;i++)
      {cin>>k;
          for(int j=1;j<=k;j++){
              cin>>exp;
              if(!flag[exp]) AddEdge(0,i,pig[exp]);//如果没被打开过,见题解2(1);
                  else AddEdge(flag[exp],i,INF);//打开过,见2(2);
                      flag[exp]=i;}
                      cin>>exp;
                      AddEdge(i,n+1,exp);//与汇点连接,见3
                  }
                  cout<<Maxflow(0,n+1)<<endl;
                  return 0;
              }
 

 

CS5511芯片实战:如何用DP转LVDS驱动高刷显示器(附配置代码) 本文详细解析了CS5511芯片在DP转LVDS高刷显示器驱动方案中的应用,包括核心架构、寄存器配置、时序优化及典型问题排查。通过实战案例和配置代码,帮助开发者快速实现120Hz高刷新率显示,特别适合医疗影像和工业HMI等严苛场景。 阅读详情

相关推荐

为ESXI Host添加v3700 FC存储

物理环境: ESXI Host version 5.1.0 Brocade SAN Switch v3700 Storage 存储和ESXI Host分别用光纤线连接在SAN交换机上 1.查询ESXI Host 的WWN号: 2. SAN交换机上查询存储的WWPN号 SAN交换机: 3.建立zone,添加到cfg文件中 brocade8Gb

haoshuwei531024的专栏 7561

7.13.2 PIGS

2023暑期夏令营

jianguosongzi的博客 234

华为2022硬件逻辑笔试题

单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说

weixin_44072819的博客 1万+

SpringCloud(pig框架):Nacos第一篇

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理

Y9CLONG的专栏 3648

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 340

逆变器并联--下垂控制引入虚拟阻抗

说明传统下垂控制的缺点、分析虚拟阻抗的原理和实现方法

weixin_58670090的博客 1万+

PIGS(最大流_增广路算法)

PIGSCrawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Description Mirko works on a pig farm that consi

Rocky0429 1684

DeepSeek Harness实战:从零构建插件化AI Agent

AI Agent开发正从硬编码走向框架化组织,插件化架构成为提升工程效率的关键。在构建可复用、可扩展的智能体系统时,开发团队需要一套能够统一管理模型调用、工具注册与上下文组装的基础设施。DeepSeek Harness作为面向Agent工程的插件化框架,通过Harness、DeepAgent与Skill三个核心抽象,将模型、工具与技能解耦为可插拔单元,让开发者无需重复造轮子即可快速搭建具备工具调用能力的智能体。本文从环境配置到Skill插件开发,完整演示如何基于DeepSeek模型构建一个可运行的Agent

weixin_34279184的博客 441

养猪(题解)

题目描述 尼克在一家养猪场工作,这家养猪场共有M间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍,客户们从早上开始一个接一个来购买生猪,他们到达后首先用手中的钥匙打开他所能打开的全部猪舍,然后从中选取他要买的生猪,尼克可以在此期间将打开的猪舍中的猪调整到其它开着的猪舍中,每个猪舍能存放的猪的数量是没有任何限制的。买完猪后客户会将他打开的猪舍关上。 好在尼克事先知道每位客户...

bbbblzy的博客 1663

Adobe Acrobat Pro(Adobe PDF) - 使用技巧

Adobe Acrobat Pro为Adobe出品的PDF查看和编辑软件,下文简称Adobe PDF,该软件功能强大,拥有查看PDF、编辑PDF、打印PDF、导出PDF、合并文件、组织页面、文本标注、注释、动作向导、等功能。本文介绍Adobe PDF的一些使用技巧,最后介绍软件设置。

NSJim的博客 4万+

基于龙虾Claw的会议纪要自动提取与重点内容总结办公场景实践

本文介绍如何使用龙虾Claw构建会议纪要自动提取与重点内容总结系统,实现会议内容的智能处理。

一键难忘的博客 252

【poj1149】 pigs 网络流最大流问题

描述 Description 尼克在一家养猪场工作,这家养猪场共有M间锁起来的猪舍,由于猪舍的钥匙都给了客户,所以尼克没有办法打开这些猪舍,客户们从早上开始一个接一个来购买生猪,他们到达后首先用手中的钥匙打开他所能打开的全部猪舍,然后从中选取他要买的生猪,尼克可以在此期间将打开的猪舍中的猪调整到其它开着的猪舍中,每个猪舍能存放的猪的数量是没有任何限制的。买完猪后客户会将他打开的猪舍关上。好在尼...

weixin_30517001的博客 209

2026华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2025华为OD机考双机位C卷++ 双机位B卷 + 双机位A卷 + 2025C/B/A卷+ 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

算法大师! 5万+

poj1149(最大流,构图较难)

题目链接:http://poj.org/problem?id=1149          大意:有M个猪圈,每个猪圈关着一定数量的猪,作为管理员的Mirko,竟然没有猪圈的钥匙,钥匙在哪呢,有N个顾客,每个顾客拿着其中几个猪圈的钥匙(作为管理员没有钥匙,竟然在顾客的手里,有点难以理解啊,但这不是重点),顾客可以在这些猪圈里购买需要数量的猪,当顾客把猪圈打开购买猪后(不会再关掉),Mirko可以任

鸟 的 天 空 1642

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

POJ 1149 PIGS

题目大意: 注释代码: /* * Problem ID : POJ 1459 Power Network * Author : Lirx.t.Una * Language : C++ * Run Time : 0 ms

源代码 536

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PIGS

#include #include #include #include #define oo 1<<28 using namespace std; int n,m,map[300][300]; int a[300],p[300],flow[300][300]; int pig[1000],num[1000],q[1000]; int start,end; void init() { mem

吐司大魔王 465

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【网络流】最大流:PIGS【EK模板、建图题】

# include # include # include using namespace std; # define N 1003 //点数==========题目陈述的100是有问题的 # define M 1003 //边数 # define INF 99999999 int n,m; //点数和边数 int cap[N][N]; //保存每个边的容量 int pathPreNode

mmc2015的专栏 837

POIJ 1149 PIGS 最大流 建图是关键

题意:某猪场由M个猪圈,N个顾客来买猪,每个猪圈有一定数量的猪,每个顾客有一个卖猪数量的最大值,每个顾客有某些猪圈的钥匙,打开相应猪圈后顾客挑选猪,在猪圈关闭前,打开门的这些猪可以任意分配到当前打开门的猪圈,买完关闭猪圈。下一个顾客重复以上操作。 将每个顾客当做一个节点来表示,再加入超级源点和超级汇点。 1. 对于每个猪圈的第一个顾客,从源点向他连一条边,容量为猪圈里的猪的数量。 2

PrimeXuan 796

PIG框架学习2——资源服务器的配置详解

资源服务器配置@EnablePigxResourceServer详解

Bananaaay的博客 3420

poj1149--PIGS(最大流)

题意: 有m个猪圈 每个猪圈有不同数量的猪 [0, 1000]有n个顾客 每个顾客需要Bi头猪 有Ai个钥匙 能打开Ai个不同的猪圈顾客按顺序来买猪 只能买他有钥匙的猪 买完之后 这几个猪圈的猪可以相互转移 很神奇的题,建图简直太神奇~~ 建图: 每个顾客和源点的流量为与该顾客的相连的猪圈且该猪圈之前没有与其他顾客相连的猪圈的猪数量和 每个顾客到汇点的流量是该顾客需要猪的数量 ...

weixin_30252155的博客 113

5大维度解析Pig框架:企业级微服务开发的效率引擎

在数字化转型加速的今天,企业级应用开发面临着架构复杂、安全合规、迭代缓慢等多重挑战。如何在保证系统稳定性的同时,快速响应业务需求?Pig框架作为基于Spring Cloud和Spring Boot的微服务开发平台,通过整合RBAC权限管理、OAuth2安全认证等核心能力,为开发者提供了一站式解决方案。本文将从价值定位、核心功能、场景实践、进阶指南到生态展望五个维度,全面解析Pig框架如何成为企业级

gitblog_01115的博客 499

[pig框架源码分析] 01 - 权限管理系统

文章目录pig白皮书介绍数据库关系接口统计部门用户角色菜单登录登录请求部门 pig白皮书介绍 权限管理实现 基于角色的访问控制方法(Role-Based Access Control,简称 RBAC)是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是: 减小授权管理的复杂性,降低管理开销; 灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。 提供多租户用户-角色-部门-权限的权限管理模型,确保开发工程师拿来即用。 数据库关系 sys_user是关键表,从user入手,又分

kinghzking的专栏 4133

Pig系统分析(4)-Logical Plan Optimizer

优化过程 Pig哲学之二——Pigs Are Domestic Animals。用户拥有足够的控制权。具体到逻辑执行计划的优化上,用户可以根据自己情况选择适合的优化规则(也可以理解为优化这块还大有潜力可挖)。 逻辑执行计划在编译成物理执行计划之前,会被LogicalPlanOptimizer处理,和一系列优化规则进行匹配,匹配上的优化规则会对原有执行计划进行变换,最终产生优化后的新执行计划。整

Idontwantobe 1541

[pig框架源码分析] 02 - 不打开后端程序,轻量的前端开发

[pig框架源码分析] 02 - 不打开后端程序,轻量的前端开发

kinghzking的专栏 2207

1149-PIGS(网络流建模,缩点)

PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18057   Accepted: 8210 Description Mirko works on a pig farm that consists of M locked pig-houses and Mirk

xdlove 937

POJ1149 网络流最大流

PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12372 Accepted: 5476 Description Mirko works on a pig farm that consists of M locked pig-houses and Mirk...

weixin_30537391的博客 133
上一篇: 蜥蜴 【有图包懂】 (网络流) gzoi
下一篇: HNOI[2008] 越狱 快速幂
Wyt_code
博客等级 码龄9年 10粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值