POJ 3281 Dining(最大流)

解题报告:POJ 3281 Dining(最大流 / “三分图”建图) B.POJ 3281 DiningDiningDining(最大流/建图模板)【省选/NOI- 】 有 F 种食物和 D 种饮料,每种食物或饮料只能供一头牛享用,且每头牛只享用一 种食物和一种饮料。现在有 N头牛,每头牛都有自己喜欢的食物种类列表和饮 料种类列表,问最多能使几头牛同时享用到自己喜欢的食物和饮料。( 1<=F<=100,1<=D<=100,1<=N<=100)1 <= F <= 100, 1<= D <= 100, 1 <= 阅读详情

 

传送门

题意:有N头牛,每个牛都有自己喜欢的food和drink的type,但是对于food和drink,每个type都只有一个,现在问最多能让多少牛满意.

 

最大流裸题,将food和drink的每个type作为点放在两端,将牛放在中间,将牛拆出两个点,一个点连接左边的food一个点连接右边的drink,将源点与次源点相连,次源点与所有food相连,汇点与所有drink相连,每个牛的两个拆点也连起来,建图就完成了,具体见下图(非样例).

 

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
using namespace std;
const int maxn=200*200+5;
const int N=200*200+5;
#define inf 0x3f3f3f3f
struct edge
{
    int to,Next,c;
    int cost;
} e[maxn];
int cnt,head[N];
int s,t;
int dis[N],pre[N],path[N];
bool vis[N];
void add(int u,int v,int c,int cost)
{
    e[cnt].to=v;
    e[cnt].c=c;
    e[cnt].cost=cost;
    e[cnt].Next=head[u];
    head[u]=cnt++;
    e[cnt].to=u;
    e[cnt].c=0;
    e[cnt].cost=-cost;
    e[cnt].Next=head[v];
    head[v]=cnt++;
}
bool spfa()
{
    memset(pre,-1,sizeof pre);
    memset(dis,inf,sizeof dis);
    memset(vis,0,sizeof vis);
    dis[s]=0;
    vis[s]=1;
    queue<int>q;
    q.push(s);
    while(!q.empty())
    {
        int x=q.front();
        q.pop();
        vis[x]=0;
        for(int i=head[x]; ~i; i=e[i].Next)
        {
            int te=e[i].to;
            if(e[i].c>0&&dis[x]+e[i].cost<dis[te])
            {
                dis[te]=dis[x]+e[i].cost;
                pre[te]=x;
                path[te]=i;
                if(!vis[te])q.push(te),vis[te]=1;
            }
        }
    }
    return pre[t]!=-1;
}
int mincostmaxflow()
{
    int cost=0,flow=0;
    while(spfa())
    {
        int f=inf;
        for(int i=t; i!=s; i=pre[i])
            if(e[path[i]].c<f)
                f=e[path[i]].c;
        flow+=f;
        cost+=dis[t]*f;
        for(int i=t; i!=s; i=pre[i])
        {
            e[path[i]].c-=f;
            e[path[i]^1].c+=f;
        }
    }
    return cost;
}
void init()
{
    memset(head,-1,sizeof head);
    cnt=0;
}
int main()
{
    int n,F,D;
    init();
    scanf("%d%d%d",&n,&F,&D);
    add(0,n*2+F+D+1,n,0);
    for(int i=1;i<=n;i++)
    {
        int f,d;
        scanf("%d%d",&f,&d);
        for(int j=1;j<=f;j++)
        {
            int x;
            scanf("%d",&x);
            x+=n*2;
            add(x,i,1,0);
        }
        for(int j=1;j<=d;j++)
        {
            int x;
            scanf("%d",&x);
            x+=F+n*2;
            add(i+n,x,1,0);
        }
    }
    for(int i=1;i<=n;i++) add(i,i+n,1,1);
    for(int i=1;i<=F;i++) add(n*2+F+D+1,i+n*2,1,0);
    for(int i=1;i<=D;i++) add(i+F+n*2,n*2+F+D+2,1,0);
    s=0,t=n*2+F+D+2;
    printf("%d\n",mincostmaxflow());
}

 

10、犹豫双模糊TOPSIS算法:原理与实例解析 本文介绍了犹豫双模糊TOPSIS算法的基本原理与应用步骤,结合中国四家纺织公司的案例,详细解析了从构建犹豫双模糊决策矩阵、归一化处理、专家信息聚合,到确定正负理想解、计算距离与相对贴近度系数的完整决策流程。该方法有效应对决策者在评价过程中的犹豫性,适用于财务评估、项目选择等复杂多属性决策场景,具有较强的实用性和推广价值。 阅读详情

相关推荐

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通

本文提供《秦时明月》6.2魔改版从零开始的完整部署指南。详细讲解CentOS服务器环境准备、服务端文件部署与安装、关键端口开放及进程验证。重点涵盖安卓客户端APK的IP修改与重签名方法,并介绍了GM后台工具的访问与使用,助你快速搭建并管理专属游戏服务器。

garlic的博客 312

AI产业成熟期的三大标志:营收、并购与人才战

人工智能已从技术探索阶段迈入商业落地深水区,其核心标志不再是模型参数或推理速度,而是可验证的AI Revenue(AI营收)、战略导向的M&A(并购)以及T型复合型人才的系统性短缺。这一转变源于基础设施成本坍塌、全球合规框架落地与企业客户认知升级三重驱动,推动AI价值衡量标准从‘能否实现’转向‘是否划算’。在金融、制造、医疗等垂直领域,真正被采购的不再是通用大模型,而是能嵌入ERP/MES/HIS等核心系统、支持业务归因与合规审计的端到端AI能力。本文聚焦AI产业生命周期中的‘成熟临界点’,解析营收结构范式

dengliugong3918的博客 501

ROS2前置基础教程 | 使用CMakeLists.txt编译ROS2节点

答案是有的,那就是cmake工具。cmake通过调用CMakeLists.txt直接生成Makefile。 2.新建CMakeLists.txt 在新建,输入下面内容。 3.编译代码 我们一般会创建一个新的目录,运行cmake并进行编译,这样的好处是不会显得那么乱。 创建好文件夹,接着运行cmake指令,代表到上级目录找。 运行完cmake你应该可以在build目录下看到cmake自动生成的Makefile了,接着就可以运行make指令进行编译 运行完上面的指令,就可以在build目录下发现节点了。ROS2

生活不止眼前的苟且 1万+

poj Dining 3281 (最大流问题&&机智建图) 好题

Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11833   Accepted: 5441 Description Cows are such finicky eaters. Each cow has a preference for certain

yanghui07216的博客 1137

Keil5调试遇坑记:手把手解决J-Link驱动与固件版本冲突(附老版本驱动包)

本文详细解析了Keil5与J-Link调试器版本冲突问题,特别是当出现'The connected J-Link is defective'警告时的解决方案。通过对比升级固件与降级驱动的优缺点,提供了详细的J-Link驱动降级操作指南,包括获取老版本驱动、替换步骤及常见问题排查,帮助开发者高效解决这一常见调试障碍。

metaverse5vr的博客 107

GMSL Strapping Pins CFG0/CFG1 应用

如果 0x13.bit3 = 0, 则是链路没有 Locked,需要去排查下具体问题(通常是工作模式配置问题)如果遇到 Link 无法建立(Locked),电源没有问题的情况下,多半是加串器和解串器的工作模式不匹配。芯片在上电时,会检测这两个管脚的电压,根据不同的电压值,芯片进入到不同的工作模式。一对加串器和解串器,只要工作模式匹配得当,Link Locked,便能够正常工作。ADI 已经充分考虑了用户的需求,尽可能的降低的芯片的使用和配置复杂度。GMSL 的解串器也是类似的配置,具体请参考对应的规格书。

iStoneWalker的博客 1272

POJ3281,Dining(二分匹配)

不难看出,这道题属于网络流的二分匹配应用,不过,在建模的时候要小心注意一点。此题当中有两个二分图,分别是1 ~ n->1 ~ f, 1 ~n -> 1 ~ d,建模要把两个二分图给联系,同时应建模过程中要注意,保持每个food和drink只能选一次以及每只cow只能挑选一次的特点。 本人所建立的网络模型是,引入源点与汇点s=0,t=f+2n+d+1,以及四个点集V1,V2,V3,V4,...

shamansi99的博客 214

日志异常检测详细整理,看这一篇就够了(附各项目代码链接)

对于不用的日志键,用它们的参数值向量训练一个参数值异常检测模型来检测有这些参数值反映的系统性能异常。与标准的GAN框架一样,D和G的参数是基于D的输出来更新的,因此鉴别器D可以被训练为尽可能敏感地将正确的标签分配给真实和虚假序列,而生成器将被训练为尽可能聪明地在经过足够多轮的迭代后欺骗鉴别器,即误导D将真实标签分配给虚假序列。LR:逻辑回归是有监督的模型,将处理后的特征矩阵以及标记作为模型的输入,得到训练后的模型,用此模型预测新出现的特征向量,以此判断特征向量是否为异常的,进而判断日志异常。

qq_20368489的博客 1万+

POJ 3281【拆点 && 最大流经典建图】

Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11097   Accepted: 5096 Description Cows are such finicky eaters. Each cow has a preference for certa

_阿阿阿阿欢 756

目标检测旋转增强源码带方向

解法1: import cv2 import math import numpy as np import os def get_degree(p1,p0): aaa = math.degrees(math.atan2((p1[1] - p0[1]), (p1[0] - p0[0]))) if aaa < 0: aaa = 360 + aaa aaa = (aaa + 90) if aaa > 360: aa...

jacke121的专栏 2085

2025.06.06【Ribo-seq】|riboWaltz:P-site定位与三碱基周期性分析流程

同学们,大家好!今天我们要学习的是riboWaltz——一款专为Ribo-seq(核糖体足迹测序)数据设计的R包,主要用于P-site定位优化和三碱基周期性分析。P-site的准确定位是Ribo-seq下游所有翻译组学分析的基础,riboWaltz为我们提供了系统、可视化、易用的解决方案。P-site定位优化:自动识别不同长度RPF的最佳P-site偏移量。三碱基周期性分析:可视化RPF在CDS、UTR等区域的分布,评估数据质量。多样本/多条件支持:可同时处理多个样本,便于批量分析和对比。

1796

POJ.3281 dining 最大流+拆点

POJ.3281 dining 最大流+拆点 思路清晰为啥一直WA呢 #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;queue&gt; #include &lt;cstdio&gt; #define maxn 400...

Vicente的博客 228

微信服务号配置总是提示“参数错误”?我就是这样一步步查出问题的

前两天,我遇到了一个很诡异的问题:在微信服务号后台配置服务器地址时,总是提示“参数错误,请重新填写”。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1278

POJ 3281-Dining(最大流)

思路:主要是如何建图,因为每头牛只能喂一次所以要拆点,我们吧图分成5部分 超级源点——>食物——>牛——>牛(拆点后每头牛连自己的内个点)——>水——>超级汇点。跑一遍最大流 #include <cstdio> #include <cstring> #include <algorithm> #include <set> #include<iostream> #include<vector> #includ.

Ray.C.L的博客 507

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

poj 3281 Dining (最大流)

POJ 3281 Dining  这题WA了两次。刚开始我建的图是: s→食物→牛→饮料→t ,但这样不能保证每头牛最多只得到一种食物和一种饮料,WA了。后来又想了一下,按照以下方式建图:s→食物→牛→牛→饮料→t,这样就能保证每头牛最多只得到一种食物和一种饮料。心想这回肯定能AC的,谁知提交上去还是一个WA。我又仔细检查了一下代码,惊奇的发现是数组开小了,这个真不应该~ #include

~飞呀,飞~ 1226

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

poj 3281 Dining(最大流)

poj 3281 DiningDescriptionCows 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

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 1296

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

poj 3281 Dining //顶点限流(最大流)

http://poj.org/problem?id=3281 poj 3281 Dining //顶点限流(最大流) Dining Time Limit:2000MS Memory Limit:65536K Total Submissions:24520 Accepted:10819 Description Cows are such...

Rshs 245

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 最大流

题意:农夫有N头牛,F种食物,D种饮料,每头牛有特定的食物和饮料需求,且每种食物与饮料只能分配给一头牛,求可以满足的牛的最大数目 思路:每头牛拆成两个点,边的容量为1,在前面连上食物,后面连上饮料,容量也为1,保证每头牛只能分配到一种食物和一种饮料,在源点与每种食物之间加上容量为1的边,每种饮料与汇点之间加上容量为1的边,若能从源点到达汇点,则表示满足了某头牛的食物与饮料需求,求出到达汇点的最大流...

qq_42397248的博客 180

【poj3281】【最大流】Dining

一道最大流的简单题。将食物和饮料分别看成一个点集,食物放在左边(记为f[i]),饮料放在右边(记为d[i])。然后将每头牛拆成两个点k,k' 然后开始建图: 1、对于每头牛喜欢的食物和饮料:添加edge(f[i],k,1),edge(d[i],k',1),edge(k,k',1),这样做的目的是为了限制每头牛只能享用一种食物和饮料。 2、对于每个食物和饮料:添加edge(s,f[i],1

I'm dreamer 626

POJ-3281 Dining(最大流)

题目:POJ-3281 Dining   题目大意:一个农场场主,为他的n头牛做了f种食物和d种饮料,每头牛都有他喜欢的食物和饮料,而且,每个食物或饮料都只能给一头牛食用,问最多能同时满足多少头牛的饮食。   解题思路:这个题目我只记得我一开始看网络流的时候看到过,当时这个构图并不会,但现在看起来好像就没当初那么难了。这个题目如果只有食物和牛的话就有点二分图的意思了,可是加了喜欢的饮料,所以需

m0_37772713的博客 222

POJ-3281 Dining

题目链接:POJ-3281 Dining 题意 有$N$头牛,$F$个食物,$D$个饮料,每头牛有一定的喜好,只喜欢某几个食物和饮料,一头牛必须同时获得一个食物和一个饮料才能满足,问至多有多少头牛可以获得满足。 思路 流网络建图: 一头牛拆分成两个点$u$和$v$,这头牛喜欢的食物向$u$连边,$u$向$v$连边,$v$向这头牛喜欢的饮料连边; 源点$s$向每个食物连边,...

weixin_30699465的博客 123

Dining POJ - 3281 Dining 拆点+最大流

传送门:POJ3281 题意:有N头牛,F种食物和D种饮料,每头牛都有各自喜欢的食物和饮料,每种饮料或食物只能分配给一头牛,问最多有多少头牛能同时得到自己喜欢的食物和饮料。 思路:一开始把饮料和食物放在一起建图, 想了很久也没想出个所以然来。 正解:将饮料和食物分别放在两边,中间用牛隔开,并且牛要拆点,这样才能限制每头牛只能选一个食物和饮料(即限制点流量)。 详细建图解释参考挑战程序设计P

WA是一笔财富 549

ACM博客_kuangbin 人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃! by kuangbin 新博客:kuangbin.github.io POJ 3281 Dining(最大流

ACM博客_kuangbin 人一我百,人十我万!追逐青春的梦想,怀着自信的心,永不放弃! by kuangbin 新博客:kuangbin.github.io POJ 3281 Dining(最大流)

chen_zan_yu_的博客 1351

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

题目地址:

scf0920 1334

poj 3281 Dining (最大流Dinic)

题目链接:  poj 3281 题目大意:   有N头奶牛,A种食物和B种饮料,每头奶牛都有自己喜欢的食物和饮料                   问有最多有多少头奶牛既可以得到自己喜欢的食物又可以得到喜欢的饮料 解题思路:  开始没有把奶牛分成两个点,这样会导致几种食物流入同一头奶牛                   正确的构图:                   1.建立超

ンZee的解题报告 1049
上一篇: 2018 Multi-University Training Contest 10 Problem L.Videos(最小费用流)
下一篇: POJ 2195 Going Home(最大流)
Murphyc
博客等级 码龄10年 13粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值