【洛谷P3254】【24题】圆桌问题【网络流】

洛谷 P3254 圆桌问题 有来自m个不同单位的代表参加一次国际会议。第i个单位派出了r[i]个代表。会议的餐厅共有n张餐桌,第i张餐桌可容纳c[i]个代表就餐。为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。请给出一个满足要求的代表就餐方案。 阅读详情

题目大意:

题目链接:https://www.luogu.org/problemnew/show/P3254
有 n n n个餐桌 m m m个公司,每个公司有 a [ i ] a[i] a[i]个人,而每个餐桌能容纳 b [ i ] b[i] b[i]人。同一个公司的人不能坐在一个餐桌上。求能否满足以上要求。


思路:

卡时卡过的,也不知道为什么会被卡。
这里写图片描述
这里写图片描述
这里写图片描述
这道题很明显最大流。公司放左边,桌子放右边,原点连公司,流量为公司人数,汇点连桌子,流量为可以容纳的人数。所有公司依次和所有桌子相连,流量为1。
然后跑一边最大流即可。


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define INF 1e9
using namespace std;

int n,m,k,head[800001],dep[800001],s,t,x,sum,num,ans,p[501][801],peo[801];

struct edge
{
    int next,c,to;
}e[2000001];

void add(int from,int to,int c)  //建模
{
    k++;
    e[k].to=to;
    e[k].c=c;
    e[k].next=head[from];
    head[from]=k;
}

bool bfs()  //分层
{
    memset(dep,0x3f3f3f3f,sizeof(dep));
    queue<int> q;
    q.push(s);
    dep[s]=0;
    while (q.size())
    {
        int u=q.front();
        q.pop();
        for (int i=head[u];i;i=e[i].next)
        {
            int v=e[i].to;
            if (dep[v]>dep[u]+1&&e[i].c)
            {
                dep[v]=dep[u]+1;
                q.push(v);
            }
        }
    }
    return (dep[t]<0x3f3f3f3f);
}

int dfs(int u,int low)  //找增广路
{
    int lows=0;
    if (u==t) return low;
    for (int i=head[u];i;i=e[i].next)
    {
        int v=e[i].to;
        if (dep[v]==dep[u]+1&&e[i].c)
        {
            lows=dfs(v,min(low,e[i].c));
            if (!lows) continue;
            e[i].c-=lows;
            e[i^1].c+=lows;
            return lows;
        }
    }
    return 0;
}

void print()  //输出方案
{
    for (int i=n+1;i<=n+m;i++)
     for (int j=head[i];j;j=e[j].next)
     {
        int v=e[j].to;
        if (v<t&&e[j].c)
         p[v][++peo[v]]=i-n;  //每个公司的人坐的餐桌
     }
    for (int i=1;i<=n;i++)
    {
    	for (int j=1;j<=peo[i];j++)
      	 printf("%d ",p[i][j]);
      	printf("\n");
    } 
}

int main()
{
    scanf("%d%d",&n,&m);
    k=1;
    s=n+m+10;
    t=n+m+11;
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&x);
        num+=x;
        add(s,i,x);
        add(i,s,0);
        for (int j=n+1;j<=n+m;j++)
        {
            add(i,j,1);
            add(j,i,0);
        }
    }
    for (int i=1;i<=m;i++)
    {
        scanf("%d",&x);
        add(n+i,t,x);
        add(t,n+i,0);
    }
    while (bfs())
    {	
        while (sum=dfs(s,INF))
         ans+=sum;
    }
    if (ans<num) return printf("0\n")&0;
    printf("1\n");
    print();
    return 0;
}
网络流经典第二十四题(题目+数据+标程) 网络流经典二十四题之第二十四题----骑士共存问题 内含pdf题目, 亲测代码, data, 文字版题解 立即下载

相关推荐

疾病负担研究(GBD)介绍

今天我们来聊一聊第一个公共数据库——GBD数据库,全称叫做global burden of disease(全球疾病负担),该数据库每年都会更新,目前已经更新到GBD2019。 这里直接给大家贴出网址:Global Burden of Disease Study 2019 (GBD 2019) Data Resources | GHDx 上图中红色圈圈标识的就是数据库的数据获取界面的链接,大家直接点击即可. 数据的检索十分方便: Context下拉菜单中可以选择不同的选项,默认是caus

weixin_44240228的博客 1万+

网络流24题解题总结(更新中)

目录 目录 前言 最大流问题 飞行员配对方案问题 最小路径覆盖问题 魔术球问题 圆桌问题 最长不下降子序列问题 试题库问题 星际转移问题 最小割问题 太空飞行计划问题 方格取数问题 费用流问题 餐巾计划问题 航空路线问题 软件补丁问题 数字梯形问题 运输问题 分配问题 负载平衡问题 深海机器人问题 最长k可重区间集问题 最长k可重线段集问题 不可做问题 机器人路径规划问题

Maxwei_wzj的OI世界 849

在 Coze 平台工作流开发中,使用图生视频大模型需要时间比较长比如5分钟,如何解决工作流运行超时的问题以及等在视频生成以后再向下走

在 Coze 平台工作流开发中,使用图生视频大模型需要时间比较长比如5分钟,如何解决工作流运行超时的问题以及等在视频生成以后再向下走 同步的比较简单,直接在coze 工作流里面就可以搞定了,也不用写代码之类的

AI懒虫 2357

洛谷——网络流24题

P2756 飞行员配对方案问题 P2762 太空飞行计划问题 P4014 分配问题 P2774 方格取数问题 P4009 汽车加油行驶问题 P4015 运输问题 P3254 圆桌问题 P2763 试题库问题 P2765 魔术球问题 P1251 餐巾计划问题 P3355 骑士共存问题 P4013 数字梯形问题 P2770 航空路线问题 P3356 火星探险问题 P2761 软件补丁问题 P4011 孤岛营救问题 P4016 负载平衡问题 P4012 深海机器人问题 P2764 最小路径覆盖问题 P2775.

我们都有光明的未来 908

Python+Flask+Echarts打造全国气象数据可视化分析大屏

本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。

weixin_29061531的博客 1059

SpringBoot3.X及SpringAi和jdk17以上版本集成MCP协议供大模型调用sse协议

MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 推出的开源协议,旨在实现大型语言模型(LLM)与外部数据源和工具的无缝集成,用来在大模型和数据源之间建立安全双向的链接。目标是成为 AI 领域的“HTTP 协议”,推动 LLM 应用的标准化和去中心化。本文主要讲解SpringBoot3.X版本和jdk17版本如何集成MCP协议 后续还有一个SpringBoot2.7和jdk1.8通过solon来实现@Service。

weixin_47247523的博客 787

洛谷网络流24题

一、P2756 飞行员配对方案问题 二、 P2762 太空飞行计划问题 三、P2764 最小路径覆盖问题 四、P2765魔术球问题 五、P3254圆桌问题 六、P2766最长不下降子序列问题 七、P2763试题库问题 八、P2774方格取数问题 九、P1251餐巾计划问题 十、P2770航空路线问题 十一、P4011孤岛营救问题(emmm,没用到网络流,也...

PCCCCC的博客 997

Halcon异常检测训练避坑指南:如何避免GPU内存溢出和样本不足问题

本文针对Halcon深度学习异常检测训练中常见的GPU内存溢出和样本不足两大难题,提供了从原理分析到实战解决方案的深度指南。通过调整批次大小、图像尺寸、使用梯度累积等技巧有效管理显存,并利用针对性数据增强与人工合成策略破解小样本困境,帮助开发者构建稳定高效的训练流程。

river的博客 215

洛谷P2774方格取数(网络流24题)

我们对棋盘进行黑白染色((横坐标+纵坐标)%2==1的点设为黑点),可以发现,若取一个黑格的点,受到影响的就是周围的白点。于是我们可以建一个二分图。问题是,应该如何建图。如果将每个点考察他能与哪些点相连,显然太复杂了,因此我们不如将每个点与他不能相连的点连接在一起。 然后可以发现这是一个最小割的套路题,假设所有的点都取,然后去掉最小割,就是答案了。 建模:S-&gt;黑点,容量为点权 白点-...

HumveeA6的博客 319

高斯过程的数学理解

G澳大利亚的过程是有益的,特别是当我们有少量数据时。当我在制造业担任数据科学家时,我们的团队使用这种算法来揭示我们接下来应该进行哪些实验条件。但是,此算法不如其他算法流行。在这篇博客中,我将通过可视化和 Python 实现来解释高斯过程 [1] 的数学背景。

gongdiwudu的专栏 3604

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。

秋知叶i 1314

【网络流24题-5】洛谷P3254 圆桌问题

最大流

a free man 336

【OS】AUTOSAR OS系统调用产生Trap的过程详解

AUTOSAR OS系统调用产生Trap的过程详解

qq_36056498的博客 2438

洛谷 P3254 圆桌问题 (网络流24题)

题目:圆桌问题 思路: 贪心,优先考虑人数多的团体,优先放在人数多的桌子上。 如果不嫌麻烦考虑网络流做法,只需把起点和所有团体连人数的边,团体和桌子连1,桌子和汇点连容量边跑最大流就好。 美丽的贪心代码: #include&lt;bits/stdc++.h&gt; using namespace std; #define maxn 300 #define read(x) scanf("%d",&...

iwi 339

OV9734 DATASHEET,完整规格书

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[网络流24题]圆桌问题

题目:洛谷P3254。 题目大意:有n个单位和m张桌子,每个单位有一定的人数,每张桌子也有一定的容量。一张桌子上不能有两个同一单位的人。现在问你能否坐下,若能则输出一种方案。解题思路:最大流。从S向每个单位连一条容量为(单位人数)的边,代表这个单位有那么多人。从每张桌子向T连一条容量为(桌子容量)的边,代表这张桌子能做那么多人。从每个单位向每张桌子连一条容量为1的边,代表每个单位在一张...

197

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

圆桌问题【网络流24题】

题目链接:https://www.luogu.org/problem/P3254 二分图最大流 然后看一下残留网络就行了 #include <bits/stdc++.h> #define rep(i, a, b) for(int i = (a); i <= (b); i++) #define pii pair<int,int> #define mp make...

蒟蒻 lxw的博客 193

[网络流24题] 洛谷P3254 圆桌问题 最大流

给出m≤150m\leq150m≤150个单位,n≤270n\leq270n≤270个餐桌,并且给出了每个单位的人数以及每个餐桌容纳的人数。求一个满足的方案,不能的话就直接输出000。 这个题简单了。就是直接源点流人数的流量到单位,单位流111的流量到餐桌,餐桌流餐桌的人数到汇点。判断是不是人数能流完,流完说明有解。 #include<bits/stdc++.h> using name...

qq_40859782的博客 214

[luogu 3254] 圆桌问题 {dinic算法,网络流24题}

题目 https://www.luogu.org/problemnew/show/P3254 结题思路 跟试题库问题很像。//听所贪心也能过 【需要注意的是:因为跟试题库问题的建图有一些区别,所以在输出的时候还要−k−k-k.】 代码 #include&amp;amp;amp;lt;cstdio&amp;amp;amp;gt; #include&amp;amp;amp;lt;iostream&amp;amp;

Nowed 636

网络流(17/24)

题目均来自洛谷。 S为源点,T为汇点。 P2756 飞行员配对方案问题 二分图板子,跑完后,看看match的值就好了。 P2763 试题库问题 把种类到题目连起来流量为1, 题目到T流量为1, S到种类流量为需要的题数。 跑最大流后看种类结点的出边的capcapcap有没有被用掉就好(注意有到S的反向边)。 P4014 分配问题 人到工作流量为1费用为Ci,jC_{i,j}Ci,j​,S到人流量为...

Rshs 305

[洛谷P3254] [网络流24题] 圆桌游戏

Description 假设有来自m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri (i =1,2,……,m)。 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐。 为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。 对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。 I...

weixin_30896763的博客 94

网络流练习题单

网络流题单

梅子酒的博客 343

网络流24题 洛谷 3254 圆桌问题

注意用当前弧优化! #include<queue> #include<cstdio> #include<cstring> #include<algorithm> const int MAXN=1e5+5; const int INF=1e9+7; int n,m; struct Edge { int nxt; ...

weixin_30414635的博客 113

整理下网络流1.0

整理下网络流1.0 再开个坑,这几天打算看看网络流,应该会以洛谷的24题为主,毕竟之前没怎么写过网络流。

weixin_45924828的博客 597

洛谷 P3254 圆桌问题 题解

原题题面 这题是网络流24题中难度较小的一道题,并没有什么思维难点 从源点向m个单位分别连边,流量为其人数 分别从n张桌子向汇点连边,流量为其容量 从m张桌子分别向n张桌子连边,流量为1(因为同一个单位来的代表不在同一个餐桌就餐。) 若最大流等于总人数,则有解,否则无解。 路径输出也不难,统计所有以单位为起点的边,若终点不为源点且为满流,就输出该边的终点。 附代码: PS:为了使得输出和样例顺...

weixin_30248399的博客 184

洛谷P3254 圆桌问题(最大流)

传送门 一道良心啊……没那么多麻烦了…… 从$S$向所有单位连边,容量为单位人数,从所有桌子向$T$连边,容量为桌子能坐的人数,从每一个单位向所有桌子连边,容量为$1$,然后跑一个最大流,看一看$S$到单位这一边流满了没,如果没有就无解。方案的话,就看单位到哪一个桌子有流就行 因为手写队列然后两个$t$弄混了结果死都不知道哪里错…… 1 //minamoto 2 #incl...

weixin_34318272的博客 141
上一篇: 【SP1716 GSS3】Can you answer these queries III【线段树】
下一篇: 【POJ 3468】A Simple Problem with Integers【分块】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值