圆桌问题 2011-12-29
算法实现题8-5 圆桌问题(习题 8-15)
´问题描述:
假设有来自 n 个不同单位的代表参加一次国际会议。每个单位的代表数分别为
n i ri
, , 2 , 1 , = 。会议餐厅共有 m张餐桌,每张餐桌可容纳 ) , , 2 , 1 ( m i ci
= 个代表就餐。
为了使代表们充分交流, 希望从同一个单位来的代表不在同一个餐桌就餐。 试设计一个算法,
给出满足要求的代表就餐方案。
´编程任务:
对于给定的代表数和餐桌数以及餐桌容量,编程计算满足要求的代表就餐方案。
´数据输入:
由文件input.txt提供输入数据。文件第1行有 2 个正整数m和 n,m表示单位数,n表
示餐桌数,1<=m<=150, 1<=n<=270。文件第 2 行有m个正整数,分别表示每个单位的代表
数。文件第3行有n个正整数,分别表示每个餐桌的容量。
´结果输出:
程序运行结束时,将代表就餐方案输出到文件 output.txt 中。如果问题有解,在文件第
1行输出1,否则输出0。接下来的m行给出每个单位代表的就餐桌号。如果有多个满足要
求的方案,只要输出1个方案。
输入文件示例 输出文件示例
输入文件示例
input.txt
4 5
4 5 3 5
3 5 2 6 4
输出文件示例
output.txt
1
1 2 4 5
1 2 3 4 5
2 4 5
1 2 3 4 5
————————————————————
1 Program Stone; 2 var flow,n,m,s,t,tot:longint; 3 map:array[0..500,0..500]of longint; 4 dis,cur,vh:array[0..1000]of longint; 5 procedure init; 6 var i,j,k:longint; 7 begin 8 readln(m,n); 9 s:=0;t:=m+n+1; 10 for i:=1 to m do 11 begin 12 read(j); 13 map[s,i]:=j; 14 inc(tot,j); 15 end; 16 for i:=1 to n do 17 begin 18 read(j); 19 map[i+m,t]:=j; 20 end; 21 for i:=1 to m do 22 for j:=1 to n do 23 map[i,j+m]:=1; 24 end; 25 function min(x,y:longint):longint; 26 begin 27 if x<y then min:=x else min:=y; 28 end; 29 function aug(x,nf:longint):longint; 30 var i,j,d,l,minh,ins:longint; 31 begin 32 if x=t then exit(nf); 33 l:=nf; 34 for i:=cur[x] to t do 35 if (map[x,i]>0)and(dis[i]+1=dis[x]) then 36 begin 37 cur[x]:=i; 38 d:=aug(i,min(l,map[x,i])); 39 dec(map[x,i],d); 40 inc(map[i,x],d); 41 dec(l,d); 42 if (dis[s]=t+1)or(l=0) then exit(nf-l); 43 end; 44 if l=nf then 45 begin 46 minh:=t+1; 47 for i:=s to t do 48 if (map[x,i]>0)and(minh>dis[i]) then begin minh:=dis[i];ins:=i;end; 49 cur[x]:=ins; 50 dec(vh[dis[x]]); 51 if vh[dis[x]]=0 then dis[s]:=t+1; 52 dis[x]:=minh+1; 53 inc(vh[dis[x]]); 54 end; 55 aug:=nf-l; 56 end; 57 procedure print; 58 var i,j:longint; 59 begin 60 if flow<>tot then write(0) 61 else begin 62 writeln(1); 63 for i:=1 to m do 64 begin 65 for j:=1 to n do 66 if map[i,j+m]=0 then write(j,' '); 67 writeln; 68 end; 69 end; 70 end; 71 Begin 72 assign(input,'prog85.in');assign(output,'prog85.out'); 73 reset(input);rewrite(output); 74 init; 75 vh[0]:=t+2; 76 while dis[s]<t+1 do inc(flow,aug(s,maxint)); 77 print; 78 close(input);close(output); 79 end.
转载于:https://www.cnblogs.com/yesphet/p/5236402.html
圆桌问题 2011-12-29相关推荐
- 英雄远征(9:20--11:29)30级体验
英雄远征(9:20--11:29)30级体验 1级任务指引提升等级,体验游戏. 2级任务指引领取装备礼包.(亮点) 3级任务指引领取武器(亮点) 4级任务指引玩家领取武器并使用.(亮点) ...
- 我在Salira的800天(2009.5.20~2011.7.29)
我在Salira的800天(2009.5.20~2011.7.29) 一.感谢篇 Content 零.序 一.感谢篇 1. Salira 2. L 3. J 二.工作篇 三.研究与学习篇 四.总结篇 ...
- 【日志】2011.12.24
2011.12.2 4 1 . de2-115-TV的视频信号输出已经改到了LTM上了. 2 . 已经将算法模块整理修改完毕,随后移植至de2-70和de2-115上. 转载于:https://www ...
- 随笔--2011.12.21
2011年12月21日对于CSDN来说是一个严重受挫点,中国最大的程序员交流平台尽然被黑客入侵,600万的用户资料以明文形势在各大网络疯狂传播!CSDN公开致歉说CSDN网站早期使用过明文密码,使用明 ...
- Cheatsheet: 2011 12.01 ~ 12.12
Web memcache internals Beyond YSlow - Squeeeezing out website network performance The Fastest Webser ...
- 2011 - 12 - 12记录2011 - 12 - 11
1. argc与argv main函数的形参(int argc,char * argv[]). main 函数有两种写法:1s.默认写法:int main() 2.标准写法:main(int argc ...
- 2017/12/29
2019独角兽企业重金招聘Python工程师标准>>> 2017/12/29 Firday weather: light rain ! 1.需求: 写一个脚本实现如下功能: 输入一个 ...
- 2010.12.29(2)——— android GridView
2010.12.29(2)--- android 可伸缩的GridView 用 GridView 来实现九宫格布局 并且一个格显示一个图片和一行字 [b]1.ImageAdapter[/b] pack ...
- 2019.12.29 BMR计算
这个 示例是进行BMR计算,主要是获取用户的输入数据,对获取的数据进行分隔,然后进行字符转换进行求解 本示例涉及知识点: ①整数.浮点数.数值运算 ②if-else语句.while语句.input语句 ...
- English Learning - Day23 作业打卡 2022.12.29 周四
English Learning - Day23 作业打卡 2022.12.29 周四 引言 一.写出适当的介词 1. 体会下列介词的侧重点 在黎明 在晚八点钟 在午夜时分 长达两个星期 在周一 在新 ...
最新文章
- jquery对所有input type=text的控件赋值
- Python测试框架pytest(01)简介、安装、快速入门
- 创建一个显示所有预定义WPF颜色的ListBox
- 媒体转码升级为媒体处理
- java只有值传递_面试官:为什么 Java 中只有值传递?
- unity shader 编辑器扩展类 ShaderGUI
- oracle读取表空间物理文件中数据,shell脚本读取oracle数据库数据写入到文件中
- Oracle date日期类型使用
- Ubuntu设置局域网Windows共享文件Samba
- HoverTree开发日志之验证码
- jQuery CheckBoxList 全选 反选
- TX2不支持TensorRT INT8,int8 官方参考
- 最有效的Safari的广告拦截插件
- 基于单片机的GPS开发 (five) GPS数据获取解析思路
- 解决Hexo无法显示图片的几种方案
- 计算机税率函数,2018最新按5000元个税Excel计算公式,帮你整理齐了!
- An exception occurred while acquiring a poolable resource. Will retry.
- wmv格式+java_Java调用ffmepg+mencoder视频格式转换(*)
- 将博客搬至CSDN_莫枫恋_新浪博客
- 计算机应用蘑菇丁周报,蘑菇钉周记(共10篇)