POJ-1149 PIGS (网络流巧妙建图)

抖音自定义卡片链接(图文链接) 抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil 阅读详情

题目链接

题意:

有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最多能卖出多少头猪。(1 <= N <= 100, 1 <= M <= 1000)

题解:

网络流巧妙建图。每个顾客分别用一个结点来表示。 对于每个猪圈的第一个顾客,从源点向他连一条边,容量就是该猪圈里的猪的初始数量。如果从源点到一名顾客有多条边,则可以把它们合并成一条,容量相加。 
对于每个猪圈,假设有n个顾客打开过它,则对所有整数i∈[1, n),从该猪圈的第i个顾客向第i + 1个顾客连一条边,容量为∞。 
从各个顾客到汇点各有一条边,容量是各个顾客能买的数量上限。具体参见这里

代码:

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <bitset>
using namespace std;

typedef long long ll;
#define int ll
#define INF 0x3f3f3f3f3f3f3f3f
#define MAXM 1000 + 10
#define MAXN 100 + 10
const ll mod = 1e9 + 7;
#define P pair<int, int>
#define fir first
#define sec second

int m, n;
int num[MAXM], pre[MAXM];

int dep[MAXN];
struct Edge{
    int next, to, dis;
}edge[MAXM<<1];
int cnt, head[MAXN];
queue<int> q;

void add(int from, int to, int dis)
{
    edge[++cnt].next = head[from];
    edge[cnt].to = to;
    edge[cnt].dis = dis;
    head[from] = cnt;
}

bool bfs(int s, int t)
{
    memset(dep,0x7f,sizeof(dep));
    while (!q.empty()) q.pop();
    dep[s] = 0;
    q.push(s);

    while (!q.empty()) {
        int now = q.front(); q.pop();
        for (int i = head[now]; i != -1; i = edge[i].next) {
            if (dep[edge[i].to] > INF && edge[i].dis) {
                dep[edge[i].to] = dep[now]+1;
                q.push(edge[i].to);
            }
        }
    }
    if (dep[t] < INF) return true;
    else return false;
}

int dfs(int now, int t, int limit)
{
    if (!limit || now == t) return limit;

    int flow = 0, f;
    for (int i = head[now]; i != -1; i = edge[i].next) {
        if (dep[edge[i].to] == dep[now] + 1 && (f = dfs(edge[i].to, t, min(limit, edge[i].dis)))) {
            flow += f;
            limit -= f;
            edge[i].dis -= f;
            edge[i^1].dis += f;
            if (!limit) break;
        }
    }
    return flow;
}

int Dinic(int s, int t)
{
    int maxflow = 0;
    while (bfs(s, t)) maxflow += dfs(s, t, INF);
    return maxflow;
}

void init()
{
    cnt = -1;
    memset(head, -1, sizeof(head));
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    init();
    cin >> m >> n;
    int st = 0, ed = n + 1;
    for(int i = 1; i <= m; i ++) cin >> num[i];
    for(int i = 1; i <= n; i ++) {
        int k; cin >> k;
        for(int j = 1; j <= k; j ++) {
            int id; cin >> id;
            if(!pre[id]) {
                pre[id] = i;
                add(st, i, num[id]), add(i, st, 0);
            }
            else {
                add(pre[id], i, INF), add(i, pre[id], 0);
            }
        }
        int b; cin >> b;
        add(i, ed, b), add(ed, i, 0);
    }
    cout << Dinic(st, ed) << endl;
}

/*

老实说,
要到几岁才开始不相信圣诞老人的存在……
这类无聊的话题对我而言,
根本不痛不痒的。
不过,
讲到我从几岁起开始不相信圣诞老人就是那个穿着红衣服的老公公时,
我能确定地说,
我根本打从一开始就不相信。
我知道幼稚园圣诞节庆祝会时出现的圣诞老人是假的,
回溯记忆,
还能记起周围的幼稚园小朋友都一脸不信任地望着假扮圣诞老人的园长老师。
即使没有撞见老妈正在亲吻圣诞老公公,
机灵的我也老早就怀疑只在圣诞节工作的老爷爷是否真的存在了。
不过,
我却是过了很久以后,
才发现外星人、幽灵、妖怪、超能力者以及特摄、动画里头,
那些与邪恶组织战斗的英雄们并不存在这世上。
不,
说不定我早就发现了,
只不过一直不想承认而已。
因为,
在我的内心深处,
是十分渴望那些外星人、幽灵、妖怪、超能力者以及邪恶组织突然出现在眼前的。
和我生活的这个普通世界相比,
特摄、动画里头所描绘的世界,
反而更有魅力。
我也想活在那种世界里!
我真的好想拯救被外星人绑架并关在透明的大型豌豆夹里头的少女…
也想拿着雷射枪运用智慧与勇气击退企图改写历史的未来人…
或者光用一句咒语就收拾了恶灵跟妖怪,
再不然就是和秘密组织的超能力者进行超能力的战斗!
等等,
冷静一下,
假设我被外星人等等(以下略)那类的生物袭击,
没有任何特殊能力的我怎么可能和他们对抗?
于是,
我便如是幻想 ——
某天,
班上突然转来一个谜样的转学生,
他其实是个外星人或未来人那类的生物,
并拥有未知的能力,
后来他跟坏人战斗,
而我只要设法让自己被卷进那场战争就好了。
主要战斗的人是他,
而我则是追随他的小跟班。
啊啊,
实在太棒了,
我真是聪明啊!
要不然就是这样。
某天,
我那不可思议的力量突然觉醒,
就像隔空取物或精神念力之类的。
而且地球上其实还有很多拥有超能力的人类存在,
自然也会有一个组织专门收容这些人。
不久之后,
善良的组织便派人来迎接我。
而我也成为组织的一员共同对抗企图征服世界的邪恶超能力者。
不过,
现实却是意外地残酷。
现实的生活中,
并没有半个转学生转来我班上,
我也没看过UFO…
就算去了地方上常出现幽灵或妖怪的灵异地点也连个鬼影都没有…
花了两小时盯着桌上的铅笔,
它却连一微米都没移动…
上课时死盯着前座同学的头,
却怎么样也无法读出他在想什么。
我就这样边惊叹世界物理法则经常出现的现象,
边不停自嘲,
不知从何时起,
我就开始不看电视上的UFO特别节目或灵异节目了。
因为不可能会有那种东西……
不过后来我也成长到仅对那方面的事情存有一丝留恋的程度。
国中毕业之后,
我便从那孩提时代的梦想毕业,
逐渐习惯这个世界的平凡。
而让我还有一缕期待的一九九九年也没有发生什么事。
进入二十一世纪后,
人类依旧无法迈出月球到其他星球去。
看这情况,
在我还活着的时候,
想从地球当天往返阿尔法人马座似乎是不太可能的。
我脑海中时而幻想着这些事,
终于也没啥感慨地成为高中生 —— 直到遇到了凉宫春日。
之后,
我就这么糊里糊涂地进入学区内的县立高中就读。
起初我还很后悔,
因为这座学校位于很高的山上,
就算是春天也要挥汗如雨地爬上直窜山顶的坡道,
想轻松健行的那份悠闲早已消失无踪。
一想到今后三年每天一大早都得这样爬山,
我的心情就阴郁无比。
或许是早上差点睡过头的关系,
走路的速度自然加快许多,
虽然也曾想过以后干脆早十分钟起床,
慢慢走去上学就不会这么累,
不过一想到临起床前的那十分钟睡眠是多么的宝贵,
我随即放弃了这个念头。
所以,
我相信未来的三年还是得持续这个晨间的运动。
一想到这里,
心情就更沉重了。

*/

 

RTKlib操作手册--使用样例数据演示 本文将使用样例数据演示如何使用RTKLIB进行rtk差分定位。 阅读详情

相关推荐

Zotero on Mac: 高效文献管理与引用指南

本文为Mac用户提供了一份全面的Zotero高效文献管理与引用指南。从安装配置、文献收集管理、PDF深度阅读与笔记,到在Word中无缝插入引用和生成参考文献,详细讲解了核心工作流。同时推荐了ZotFile、Better BibTeX等必备插件,并介绍了利用同步与WebDAV实现跨设备无缝衔接的方法,助力研究者构建个人数字知识库,极大提升学术研究效率。

weixin_29281941的博客 1176

POJ 1149 迈克卖猪问题(PIGS) 最大流

#include #include #include #include #include #define INF 0x3f3f3f3f using namespace std; int M,N; vector que[1010]; int pig[1010]; int cus[110]; const int maxe=1e4+1000; const int maxv=110; str

EnjoyingAC的博客 709

autoware 激光-相机联合标定

autoware进行激光-相机联合标定 ~~~ 刚开始进行激光-相机联合标定的时候,出现了不少问题,在此记录一下整体标定流程,以防忘记。在此,特别感谢佳明师弟,在录制数据集时提供的帮助。 ~~~ 0.系统配置: Ubuntu18.04系统 ROS Melodic opencv 3.2.0 vlp-16 一.安装autoware 这部分网上教程挺多的,但我在编译的过程中仍存在不少bug,唉~_~。 二.安装calibration_camera_lidar,从a...

nuo112的博客 1万+

POJ--1149--PIGS【网络最大流】

链接:http://poj.org/problem?id=1149 题意:迈克有一个养猪场,有m个猪圈,每个猪圈都上了锁,但是迈克没有钥匙他不能打开猪圈,要买猪的顾客一个接一个来养猪场,每个人有一些猪圈的钥匙,他们要买一定数目的猪,如果顾客要来买猪,他们会提前告诉迈克:他们所拥有的钥匙数量及对应哪些猪圈、要购买的数量,这样迈克就能安排销售计划使卖出的猪最多。 当每个顾客来的时候,将那些他拥有钥

阳光照耀圣西罗 1067

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9389

SAP与泛微OA集成(半导体行业)

本项目通过SAP PO中间件集成SAP与泛微OA在半导体行业的应用,由于行业特殊性,广泛深入应用了RSA加密等特性

集信通 1163

POJ1149最大网络流

 这道题目的大意是这样的:有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。    问总共最多能卖出多少头猪。    举个例子来说。有 3 个猪圈,初始时分别有 3、 1 和 10 头猪。依次来了 3 个顾客,第一个打开 1 号 和 2 号猪圈,

边城水手的专栏 1010

Ansys CFX Pre 中 RGP 表的高级配置与优化策略

本文深入探讨了Ansys CFX Pre中RGP表的高级配置与优化策略,旨在帮助用户将仿真从“能用”提升至“精准好用”。文章重点解析了如何根据具体仿真场景,科学设定温度压力范围、选择流体类型,并针对相变等复杂工况实施网格加密与分离建表等关键优化技术,以显著提升计算精度与稳定性。

weixin_29216957的博客 1180

POJ - 1149 PIGS (建图思维+最大流)

(点击查看原题) 题目分析 (以下均为 Edelweiss 大佬的思路,博主承认自己写不了这么好,但是学习的心促使我记录下这个好题的写法,所以代码是我写的) 【题目大意】 有 M 个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依 次来了 N 个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每 个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪...

weixin_30497527的博客 176

手把手教你用SIMCOM A7670C_FASL模组实现双路MQTT连接阿里云(附完整源码)

本文详细介绍了如何使用SIMCOM A7670C_FASL 4G模组实现双路MQTT连接阿里云,包括硬件配置、开发环境搭建、双路MQTT架构设计及实现细节。通过完整的源码示例和实战指南,帮助开发者快速掌握物联网设备开发中的多路MQTT连接技术,提升工业级应用的开发效率。

weixin_33696822的博客 227

9.13华为OD机试真题 新系统 - 手机桌面整理 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【手机桌面整理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【 手机桌面整理】多语言题解。

qq_45776114的博客 635

[网络流-最大流]POJ1149-PIGS (特殊建图)

题目链接 POJ1149PIGS 题意 有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最多能卖出多少头猪。(1 &lt;= N &lt;= 100, 1 &...

Uniontake 371

91、Windows网络配置:动态更新与名称解析全攻略

本文全面解析了Windows XP Professional系统中的网络配置方法,重点介绍了动态更新和名称解析两大核心功能。动态更新部分涵盖DHCP客户端、静态配置客户端、远程访问客户端和多宿主客户端的配置方法,并提供禁用动态更新和编辑Hosts文件的注意事项。名称解析部分详细讲解了NetBIOS名称解析的基础知识、WINS配置方法、B节点广播与Lmhosts文件的使用,以及WINS代理的作用和配置要点。通过操作建议流程图和关键操作步骤回顾,帮助用户快速掌握网络配置的核心技巧,适用于不同网络环境的实际需求。

blue42的博客 233

POJ - 1149 PIGS解题报告(网络流+巧妙建图)

题目大意:有1000个猪舍,每个猪舍里装了一些猪,这些猪舍都被锁上了,你没有钥匙。接下来会每天来一个顾客(一共来100天),这个顾客有某几个猪舍的钥匙,然后他还想买几头猪。你可以办到的就是,把这些猪舍里的猪卖若干头给这个顾客,然后把剩下的猪合理的安放到这些打开着的笼子里面,然后再次锁上,等待下一个顾客的到来。问你如何合理安排,才能让这些猪被卖出去的最多。

薛崇祥的博客 560

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

poj 1149 PIGS 题解(网络流,建图)

原题链接: poj 题意简述 有m(&lt;=1000)m(&lt;=1000)m(<=1000)头猪,和n(&lt;=100)n(&lt;=100)n(<=100)个顾客。第iii个顾客有ai(&lt;=m)a_i(&lt;=m)ai​(<=m)个喜欢的猪(给定这些猪的编号),但是最多只会买bi(&lt;=m)b_i(&a...

LightningUZ的博客 400

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【POJ 1149 PIGS】网络流 & 合并节点简化构图 & Dinic算法

PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21812 Accepted: 9975 DescriptionMirko works on a pig farm that consists of M locked pig-houses and Mirko can’t unlock any

楚江枫 1260

OV9734 DATASHEET,完整规格书

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

[POJ 1149]PIGS[最大流][建图]

题目链接:[POJ 1149]PIGS[最大流][建图] 题意分析: 有M个猪圈,每个猪圈有一定数量的猪,但是米尔科没有打开猪圈的钥匙,钥匙在顾客的手上。总共N个顾客,每个顾客拥有某些猪圈的钥匙,每次到来一个顾客,他都可以从他可以打开的猪圈选猪,需要选need只。每次选完后,米尔科可以选择把这些猪分配到任意一个打开的猪圈里面,然后关上猪圈。现在问:怎么安排可以使得猪被卖的最多,最多多少只?

闲停 1029

poj 1149 PIGS

<br />// poj 1149 PIGS (网络流) /* 网络流构图,用sap邻接表版过的,一开始用邻接阵,因为点有两千多个就MLE了,构图如下: 1. 源点s到客户连边,权值为客户所需求量 2. 客户到他所能打开的猪圈连边,权值为inf 3. 如果客户i能打开猪圈k,客户j(j<i) 也能打开猪圈k,则i连边到j(只连一次),权值为inf 4. 猪圈i拆点,i-i' 权值为猪圈中猪数量 5. 猪圈i' 到汇点 t 连边,权值为inf */ #include <iost

birdforever的专栏 780

POJ 1149 PIGS 迈克卖猪问题 网络流构图+三种AC方法

题目链接:POJ 1149 PIGS PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16533   Accepted: 7403 Description Mirko works on a pig farm that consis

一蓑烟雨 1859

poj1149 PIGS(网络流最大流 + 建图)

PIGS Time Limit:1000MS Memory Limit:10000K Total Submissions:24778 Accepted:11281 Description Mirko works on a pig farm that consists of M locked pig-houses and Mirko can't unlock any pighouse because he doesn't have the keys. Cust...

。 332

poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新

题目大意:是有M个猪圈,N个顾客,顾客要买猪,神奇的是顾客有一些猪圈的钥匙而主人MIRKO却没有钥匙,多么神奇?顾客可以在打开的猪圈购买任意数量的猪,只要猪圈里有足够数量的猪。而且当顾客打开猪圈后mirko就可以在打开的猪圈之间任意调整猪的数量。问mirko怎样做能使顾客买到最多的猪 思路如下:(也是查的) 1.取超级源点和超级汇点; 2.当猪圈被第一次打开时,在源点与当前顾客之

柯安的专栏 1949

POJ 1149 PIGS 最大流建图

思路见 PKU 1149,PIGS,构造网络流模型时,要注意合并节点和边 又是大神带我飞。。。 #include #include #include #include using namespace std; #define REP( i, a, b ) for( int i = a; i < b; i++ ) #define FOR( i, a, b ) for( int

s_h_r 419

POJ 1149 PIGS

PIGS Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Description Mirko works on a pig farm that consists of M locked pig-houses and M...

dezhen7015的博客 75

POJ 1149PIGS(网络流之最大流)

题目地址:http://poj.org/problem?id=1149 这题重点在于zenya

scf0920 931

POJ 1149 PIGS 网络流——【论建图的重要性QAQ】

先附赠原题解http://pan.baidu.com/s/1gea9eJh传到网盘上了喵~**Description**Mirko works on a pig farm that consists of M locked pig-houses and Mirko can’t unlock any pighouse because he doesn’t have the keys. Customer

远方 706

POJ - 1149 PIGS (网络流 dinic 建图方法可学习)

图论真的好难啊 这题看了好久终于a掉了 题目思路 按照一般的朴素建图想法就是把客人猪圈之间都建边 用超级源点和超级汇点连接 但是这么建边 边的个数会过大 所以要减少边 有一种很巧妙而建图方法 只将商人看作图上的点 从源点建到每个商人的边 边权为商人能开的猪舍有的猪的个数 因为可能多个商人访问一个猪舍 所以记录访问的先后顺序 在将这些商人建边 边权值为inf 最后对商人和汇点建边 边权值为商人要买的数量 还有可能会有重边 要处理 这题数据好像有点水 没处理也过了。。。。 ac代码 #include <s

daydreamer23333的博客 197
上一篇: 洛谷 P2765 魔术球问题 (网络流 + 思维)
下一篇: Codeforces Gym - 101982C (dp)
ttoobne
博客等级 码龄9年 13粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值