[洛谷P3254] [网络流24题] 圆桌游戏
2024-09-05 03:28:22
Description###
假设有来自m 个不同单位的代表参加一次国际会议。每个单位的代表数分别为ri (i =1,2,……,m)。
会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐。
为了使代表们充分交流,希望从同一个单位来的代表不在同一个餐桌就餐。试设计一个算法,给出满足要求的代表就餐方案。
对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。
Input###
第1 行有2 个正整数m 和n,m 表示单位数,n 表示餐桌数,1<=m<=150, 1<=n<=270。
第2 行有m 个正整数,分别表示每个单位的代表数。
第3 行有n 个正整数,分别表示每个餐桌的容量。
Output###
如果问题有解,第1 行输出1,否则输出0。接下来的m 行给出每个单位代表的就餐桌号。如果有多个满足要求的方案,只要输出1 个方案。
Sample Input###
4 5
4 5 3 5
3 5 2 6 4
Sample Output###
1
1 2 4 5
1 2 3 4 5
2 4 5
1 2 3 4 5
想法##
因为是网络流24题,所以上来我先想的是怎么用可爱的最小割。
没想出来,于是仔细分析了一下题意。
发现,诶,好像贪心就可以啊……
单位代表数排个序,每个餐桌剩余容量排个序,先做剩余容量多的餐桌。
就A了……
之后又想了想网络流怎么做。
S向每个单位连容量为单位代表数的边,每个单位向所有餐桌连容量为1的边,每个餐桌向T连容量为餐桌容量的边。
跑一边最大流,看S发出的边是否都满流就完了。
这可真是一道辣鸡题……
代码##
(贪心)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 275;
const int M = 155;
struct data{
int v,id;
bool operator < (const data &b) const{
return v>b.v;
}
}d[N],r[M];
int c[M][N],w[M];
int n,m;
int main()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++){
scanf("%d",&r[i].v);
r[i].id=i;
w[i]=r[i].v;
}
for(int i=1;i<=n;i++){
scanf("%d",&d[i].v);
d[i].id=i;
}
int flag=1;
sort(r+1,r+1+m);
for(int i=1;i<=m;i++){
sort(d+1,d+1+n);
for(int j=1;j<=r[i].v;j++){
if(!d[j].v) break;
c[r[i].id][j]=d[j].id;
d[j].v--;
}
if(!c[r[i].id][r[i].v]) { flag=0; break; }
}
if(flag==0) printf("0\n");
else {
printf("1");
for(int i=1;i<=m;i++){
printf("\n%d",c[i][1]);
for(int j=2;j<=w[i];j++)
printf(" %d",c[i][j]);
}
}
return 0;
}
最新文章
- Robot Framework--11 RF结合Jenkins
- Android APK反编译就这么简单 详解(附图)
- 关于PHP中Session文件过多的问题
- category分类
- 算法导论 第六章 思考题 6-3 d叉堆
- Android USB Host与HID通讯 (二)
- sizeof操作符-结构体与类大小
- c# 数据库缓存依赖
- oracle系列笔记(2)---多表查询
- Yii2 Pjax 与 ActionForm ,不刷新提交数据
- [转] 面向对象原则之GOF是招式,九大原则才是精髓
- ECC椭圆曲线详解(有具体实例)
- wampserver启动不起来的原因?
- Shell脚本小技巧收集
- HBase篇--HBase操作Api和Java操作Hbase相关Api
- java随笔4 java中接参整形转字符串
- 潭州课堂25班:Ph201805201 django 项目 第二课 git 版本控制 (课堂笔记)
- PHP事件机制
- 让hive的表注释和字段注释支持中文
- Android真机测试、乐视手机启用开发者模式
热门文章
- 关于react的redux的知识点
- 一目了然 | 数据库实例性能调优利器:Performance Insights
- C#反射与特性(一):反射基础
- VS2017+QT5.11.2+SeetaFace1.0/SeetaFace2.0的简单实现
- monorepo仓库管理方式探秘
- ELK学习实验004:Elasticsearch的简单介绍和操作
- 【题解】HDU Homework(倍增)
- LOJ 北校门外的回忆 倍增+线段树
- 1031 查验身份证 (15 分)C语言
- WIN10高清壁纸