POJ 3281 Dining(网络流建模)

【数据分析生命周期全揭秘】从零开始打造你的数据科学项目 | 最全指南 在当今数据驱动的世界中,数据科学正在颠覆传统行业,成为企业决策和价值创造的重要引擎。然而,如何科学、系统地开展一个数据分析项目?这是很多人关心的核心问题。本篇文章基于经典数据分析课程内容,深入解读数据分析生命周期的每个阶段,让你快速掌握从“发现问题”到“落地应用”的完整流程。如果你正在学习或准备从事数据分析领域,这篇文章一定会对你大有帮助!数据分析生命周期的六大阶段数据分析生命周期的六个阶段相辅相成,每个阶段都至关重要:发现问题:明确需求,提出假设。数据准备:清洗、转换和可视化数据。 阅读详情

Dining
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 19277 Accepted: 8599

Description

Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others.

Farmer John has cooked fabulous meals for his cows, but he forgot to check his menu against their preferences. Although he might not be able to stuff everybody, he wants to give a complete meal of both food and drink to as many cows as possible.

Farmer John has cooked F (1 ≤ F ≤ 100) types of foods and prepared D (1 ≤ D ≤ 100) types of drinks. Each of his N (1 ≤ N ≤ 100) cows has decided whether she is willing to eat a particular food or drink a particular drink. Farmer John must assign a food type and a drink type to each cow to maximize the number of cows who get both.

Each dish or drink can only be consumed by one cow (i.e., once food type 2 is assigned to a cow, no other cow can be assigned food type 2).

Input

Line 1: Three space-separated integers:  N,  F, and  D 
Lines 2.. N+1: Each line  i starts with a two integers  Fi and  Di, the number of dishes that cow  i likes and the number of drinks that cow  i likes. The next  Fi integers denote the dishes that cow  i will eat, and the  Di integers following that denote the drinks that cow  i will drink.

Output

Line 1: A single integer that is the maximum number of cows that can be fed both food and drink that conform to their wishes

Sample Input

4 3 3
2 2 1 2 3 1
2 2 2 3 1 2
2 2 1 3 1 2
2 1 1 3 3

Sample Output

3

Hint

One way to satisfy three cows is: 
Cow 1: no meal 
Cow 2: Food #2, Drink #2 
Cow 3: Food #1, Drink #1 
Cow 4: Food #3, Drink #3 
The pigeon-hole principle tells us we can do no better since there are only three kinds of food or drink. Other test data sets are more challenging, of course.

Source


题意:

多重的匹配,每只牛喜欢一种的food和drink,问最多几只牛。

POINT:

s-food-牛1-牛2-drink-t。

牛1牛2其实是同一只牛。

4 3 3
2 2 1 2 1 3
0 0
0 0
0 0
参考这一组测试样例。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
#define LL long long
const int inf = 0x3f3f3f3f;
const int maxn = 600;
struct edge
{
    int from,to,flow,cap;
    edge(int u,int v,int f,int c):
    from(u),to(v),flow(f),cap(c){};
};
vector<int>G[maxn];
vector<edge>len;
void add(int u,int v,int c)
{
    len.push_back(edge(u,v,0,c));
    len.push_back(edge(v,u,0,0));
    G[u].push_back(len.size()-2);
    G[v].push_back(len.size()-1);
}
int d[maxn],s,t;
bool bfs()
{
    int vis[maxn];
    memset(vis,0,sizeof vis);
    vis[s]=1;
    queue<int>q;
    d[s]=1;
    q.push(s);
    while(!q.empty())
    {
        int u = q.front();q.pop();
        for(int i=0;i<G[u].size();i++)
        {
            edge e = len[G[u][i]];
            if(e.cap>e.flow&&!vis[e.to])
            {
                d[e.to]=d[e.from]+1;
                vis[e.to]=1;
                q.push(e.to);
            }
        }
    }
    return vis[t];
}
int cur[maxn];
int dfs(int u,int a)
{
    if(u==t||a==0) return a;
    int flow=0,f;
    for(int &i=cur[u];i<G[u].size();i++)
    {
        edge &e = len[G[u][i]];
        if(d[e.to]==d[e.from]+1&&(f=dfs(e.to,min(a,e.cap-e.flow)))>0)
        {
            e.flow+=f;
            len[G[u][i]^1].flow-=f;
            flow+=f;
            a-=f;
        }
        if(a==0) break;
    }
    if(flow==0) d[u]=-1;
    return flow;
}
int maxflow()
{
    int ans=0;
    while(bfs())
    {
        memset(cur,0,sizeof cur);
        ans+=dfs(s,inf);
    }
    return ans;
}
int main()
{
    int n,f,d;
    scanf("%d %d %d",&n,&f,&d);
    s=0,t=f+d+n+n+1;
    for(int i=1;i<=n;i++)
    {
        int fi,di;scanf("%d %d",&fi,&di);
        int ff[maxn],dd[maxn];
        for(int j=1;j<=fi;j++)
        {
            scanf("%d",&ff[j]);
            add(ff[j],f+i,1);
        }
        for(int j=1;j<=di;j++)
        {
            scanf("%d",&dd[j]);
            add(i+n+f,n+n+f+dd[j],1);
        }
    }
    for(int i=1;i<=n;i++)
    {
        add(f+i,f+i+n,1);
    }
    for(int i=1;i<=f;i++)
    {
        add(0,i,1);
    }
    for(int i=1;i<=d;i++)
    {
        add(n+n+f+i,t,1);
    }
    printf("%d\n",maxflow());
}



手把手教你完成YOLOv11分类识别界面搭建,使用Qt6设计YOLOv11分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程 本项目结合YOLOv11分类识别算法和PySide6框架,开发了一套图形化分类识别系统。系统支持图片、视频和摄像头实时分类检测,并具备完善的用户管理功能,包括登录验证、个人信息修改等模块。最新版本新增了管理员后台管理系统,包含用户管理、权限控制等功能。系统采用MySQL数据库存储用户数据,界面设计采用QtDesigner完成,实现了高效的目标分类与友好的交互体验。 阅读详情

相关推荐

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

Dining

Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others. Farmer John has cooked fabulous meals for his cows, but he forgot to check his me...

Hugokung的博客 518

LoRa正点原子模块组网步骤

按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE要等于1奥 第一步分析通讯协议: 点对点通讯是在透明传输的条件下,地址和信道都是一样的,直接发送接受数据。 组网呢我们利用是: 定向传输就是 A、B的地址、信道不同 假如A是要想B发送信息就用函数来下面: int b[5]...

weixin_43205178的博客 4082

POJ-3281 Dining【网络流】【最大流】【dinic】

题目 POJ-3281 题意 n只牛,f种食物,d种食物,每只牛都有喜欢的食物和饮料,每头牛都有各自喜欢的食物和饮料,每种食物或饮料只能分配给一头牛。问最多能有多少头牛可以同时得到喜欢的食物和饮料。(每头牛只吃一份食物和饮料) 题解 建一个像下面的图求最大流(边权都为1) 主要讲下为什么要把每只牛拆开成两部分 如果不拆的话会建立如下的图,这样子求出的最大流为2,因为一只牛吃了两份食物饮料,把牛拆开来限制了一只牛只能吃一份食物饮料 代码 /* * @author: arc * @date: 2020-

weixin_43895356的博客 276

EMC基础知识总结

电磁干扰(Electromagnetic Interference),简称EMI,有和两种。传导干扰主要是电子设备产生的干扰信号通过导电介质或公共电源线互相产生干扰;辐射干扰是指电子设备产生的干扰信号通过空间耦合把干扰信号传给另一个电网络或电子设备。

学海无涯的专栏 1363

【CANoe示例分析】0002_SOMEIPDemo

该工程由Vector官方提供,作为仿真SOME/IP节点的示例。Demo中介绍了两种仿真SOME/IP节点的方法,一种是基于arxml数据库的仿真,另一种是没有数据库(arxml、fibex)的仿真。无论是哪种形式的仿真,如果想要通过CAPL程序接收或者发送SOME/IP信息,都需要添加交互层的信息,这些信息可以通过添加DLL文件实现,DLL文件路径在CANoe安装目录下的Exec32文件中。

jasonj333 3511

poj3281 网络流

Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others. Farmer John has cooked fabulous meals for his cows, but he forgot to...

qq_40859951的博客 269

OpenCV计算机视觉实战(11)——边缘检测详解

在本节中,我们系统介绍了三大经典边缘检测算子,包括 Sobel 算子:一阶导数平衡了噪声抑制与边缘提取,结合方向信息可用于纹理分析与车道检测;Laplacian 算子:二阶导数对微小亮度突变尤为敏感,配合零交叉和细化技术,可精确捕捉任意方向的细节边缘;Canny 算法:集成多阶段处理与双阈值策略,通过多尺度融合与自适应阈值优化,达到抗噪与细节兼顾的卓越效果。

qq_30167691的博客 4374

POJ - 3281 (Dining)

题意:有 N 头牛,F种食物和D种饮料,每头牛都有喜欢的食物集合和饮料集合,如果在两个集合中分别任选一个就可以让这头牛满意,现给出N头牛的喜爱的食物和饮料集合,求F种食物和D种饮料每个只有一份的情况下最多能满足牛的数量; 分析:网络流建图,设 0 为源点,1~F 为食物的种类编号,F+1~F+D为饮料的种类编号,F+D+2*i-1~F+D+2*i 为第i头牛的编号(后面解释为什么一头牛需要...

Joker & Liar的博客 294

5G Multicast/Broadcast Services(MBS) (七) MBS广播DRX

当处于RRC_IDLE或RRC_INACTIVE或RRC_CONNECTED 状态时,如果为 G-RNTI 配置了broadcast DRX,则允许MAC entity使用broadcast DRX 操作不连续地监听此G-RNTI的PDCCH;此 G-RNTI 的 drx-onDurationTimerPTM 或 drx-InactivityTimerPTM 正在运行的时间,也就是。long DRX周期drx-LongCycle-PTM和drx-StartOffset-PTM定义DRX周期开始的子帧。

asd199086的博客 391

102、栅极驱动芯片选型与设计

文章摘要 本文分享了栅极驱动芯片选型与设计的实战经验。通过一次因驱动芯片选型不当导致的炸管事故,作者总结了栅极驱动芯片选型的五个关键参数:峰值驱动电流、驱动电压范围、传播延迟匹配、欠压锁定和隔离等级。文章详细分析了自举电路设计中的常见陷阱,以及栅极电阻对开关特性的影响,并强调了PCB布局布线的重要性。最后,作者提供了七条实用建议,包括避免通用型驱动芯片、关注CMTI参数、使用插件电阻等。核心观点是:栅极驱动设计需要综合考虑参数匹配、电路布局和实际调试,示波器实测波形是验证设计的唯一标准。

2401_88858637的博客 42

POJ【3281】Dining(网络流)

题目链接:http://poj.org/problem?id=3281 分析 这道题的意思是有N头牛,F种食物和D种饮料,每头牛有自己喜欢的食物和饮料且只能选择一种食物和饮料,所有牛不能选择相同的食物和饮料,问最多有多少头牛能得到满足。这道题类似二分匹配,但又不全是,个人理解有点像将二分匹配转化为特殊的网络流的过程。以下是图的模型。 增加一个源点s和一个汇点t,将牛拆分成两份,源点指向食物,食物...

yj8023xx的博客 498

智能手表竞品分析与市场调研报告

本报告旨在通过调研当前主流智能手表产品的功能特点、市场表现、用户反馈、定价策略等方面,辅助我司即将立项的Aurora Watch S1产品在功能定义、目标用户、定价区间、差异化竞争等方面做出科学决策。 调研范围包括国内外中端价位主流品牌(¥199~¥999),重点关注小米、华为、荣耀、Amazfit、Redmi、Haylou 等品牌的热销型号。

hoony123的博客 7万+

【网络流-最大流-Dinic-建模】POJ3281 Dining:Pascal 解法

传送门:POJ3281 【题目大意】 有N头奶牛,每一头都有自己喜欢的食物和饮料,且它们只吃自己喜欢的东西。每头牛只能选一个食物与一个饮料现在有F种食物,D种饮料,求最多能够同时满足几头奶牛的需求。 【输入格式】 第一行N,F,D。N代表牛的数量;F代表食物的数量;D代表饮料的数量 接下来2..N+1行:每行前两个数:F[I]与D[I]代表这头牛喜欢食物与饮料的种类数,接下来F+D行代表

lukeyang02的专栏 383

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

POJ 3281 Dining 【网络流建模汇总】最大流

很经典的一道网络流了 相信网上的题解也很多很多 这里的重点放在两张图上 是上图还是下图 就会明白这个题到底什么意思的 点权和边权到底如何解释 //#include #include #include #include #include #include #include using namespace std; const int ma

ACdream 364

SAP B1中文培訓教材_SDK

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

POJ 3281 Dining(最大流)

POJ 3281 Dining(最大流) 题目链接:poj3281 【题目大意】       有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一种食物和一种饮料。现在有 N 头牛,每头牛都有自己喜欢的食物种类列表和饮料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。(1 【建模方法】        此题的建模方法比较有开创性。以往一般都

qq_36782366的博客 240

网络流入门2——最大流(关于为什么要拆点的问题)

POJ 3281 Dining (USACO 2007 Open Gold) 题目意思比较简单,就是说现在有 N 只奶牛,F 种食物和 D 种饮料,每只奶牛喜欢其中的一些食物和饮料。现在每种食物和饮料只能分给一只奶牛,每只奶牛也只能吃一种食物和一种饮料,问最多能使多少奶牛既吃到食物又喝到饮料。 这个题和二分图匹配有相似之处,但又不完全相同,我们可以沿着二分图匹配的建模方式继续思考。 由于有

20164225的博客 2161

POJ3281 Dining

POJ3281 Dining Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others. Farmer John has cooked fabulous meals f...

ACMerszl的博客 275

POJ 3281 Dining【拆点+SAP网络流】

POJ 3281 Dining 这里选择使用的是SAP网络流里的Dinic 题意:有n头牛,f个食物,d个饮料。每头牛都有一些自己喜欢的食物和饮料,当且仅当这头牛获得了一个自己喜欢的饮料和一个自己喜欢的食物,他才会开心。求,最多可能有多少牛会开心。每种食物和饮料只有一个。 一种解题思路:使用网络流,试图构建满流数量为答案的网络。 一种建图思路:超级源点S指向所有食物的边的权值为1,被喜欢的食物...

Irish_Moonshine的博客 347

POJ 3281Dining(网络流之最大流)

题目地址:

scf0920 1334

POJ 3281 Dining (网络流)

POJ 3281 Dining (网络流) Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others. Farmer John has cooked fabulous meals for h...

dipinzhu4111的博客 133

POJ3281 Dining【网络流/点的限制/拆点】

题目链接:POJ3281 Dining 题意:f个食物和d个饮料,分别有自己的编号,n个奶牛吃到自己想要的食物和饮料才会开心,求最多多少奶牛开心; 分析:对奶牛而言有1的上限,对奶牛拆点建边,流量为1(注意点的编号); #include<cstdio> #include<cstdlib> #include<iostream> #include<cm...

MaJorieL 213

POJ 3281 Dining【Dinic】

POJ 3281 Dining 核心算法:网络最大流 大意:有n头牛,F种食物,D种饮料,第i头牛喜欢fi种食物,di种饮料,编号分别为。。。 已知一头牛最多能吃一种食物和一种饮料,每种饮料 或食物最多能被一头牛吃,求以上条件下,最多能有多少头 牛能吃到他所喜爱的食物和饮料 建立模型: 建立网络流模型:1.对每种食物建立从源点指向它的一条边,流量为1...

a48634331的博客 132

POJ - 3281 Dining(匹配问题,网络流)

题目链接:POJ - 3281 Dining Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others. Farmer John has cooked fabulous meals for his cows, but h...

Plus Ultra! 252

POJ - 3281 Dining 网络流

题意:n个奶牛,有 f 种食物, d种饮料。 接下来n行,每行先是f1,d1,接下来f1个食物,d1个饮料 表示该奶牛喜欢的食物和水。求最多有多少奶牛能得到自己喜欢的食物。 解:建立 源点->食物->牛->牛->水的网络流求最大流。牛和牛建边是因为只能选择一种方案,起限流作用。 #include <iostream> #include <cstri...

恒持此志成永志 243

POJ-3281(最大流+EK算法)

Dining POJ-3281 这道题目其实也是网络流中求解最大流的一道模板题。 只要建模出来以后直接套用模板就行了。这里的建模还需要考虑题目的要求:一种食物只能给一只牛。 所以这里可以将牛拆成两个点,一个点和食物匹配,另一个点和饮料匹配。另外增加一个源点和一个汇点。最后根据题目的输入来连边就可以了。容量统一设置为1. #include<iostream> #includ...

262

POJ - 3281 Dining 网络流

POJ - 3281 Dining 网络流 一、题意 POJ - 3281 Dining 农场里有n头牛,f种食物,n中饮料,每头牛有自己喜欢的食物和饮料类型,每种食物和饮料都只能分配给一头牛,现在为每头牛分配食物和饮料,求能同时得到自己想要的食物和饮料的牛的数量(每头牛最多只获得一种食物或饮料)? 二、解题思路 只是两个二分图匹配的问题,可以用网络流求解,可以如下建图: (1)...

Summer_via的博客 444
上一篇: Codeforces Round #430 (Div. 2) - D. Vitya and Strange Lesson (01字典树)
下一篇: Codeforces Round #431 (Div. 2) - A. Odds and Ends
Mr_Treeeee
博客等级 码龄10年 38粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值