宿舍分配
来源:互联网 发布:dnsmasq windows 编辑:程序博客网 时间:2024/04/28 16:16
宿舍分配
程序文件名: school.cpp/school.pas/...
一个很有名的大学NKU里有不少的教学楼和宿舍楼。
学校为了学生们的切身利益着想,希望能有一个好的分配方案,使得每天早上学生们去上课所要走的路程总和最小。
为了简化问题,我们假设
学校为了学生们的切身利益着想,希望能有一个好的分配方案,使得每天早上学生们去上课所要走的路程总和最小。
为了简化问题,我们假设
1. 每个教学楼都属于一个学院,而且每个学院只有一个教学楼
2. 每天早上第一节每个学生都有课,且这个课是在自己学院楼里上的专业课。
3. 如图所示,宿舍的位置为(Pj,Qj),学院楼的位置为(Xi,Yi)时,这两个楼的距离Dij由下面的公式来决定。
Dij=|Xi-Pi|+|Yi-Qi|+1
Dij=|Xi-Pi|+|Yi-Qi|+1
宿舍分配可以很随意,即同一个学院的学生们可以不住在一起,一个宿舍里也可以住几个不同学院的学生。
现在学校已经有了一个宿舍分配方案,现在委托编程高手你来验证一下这个方案是不是最优的。
现在学校已经有了一个宿舍分配方案,现在委托编程高手你来验证一下这个方案是不是最优的。
输入(请使用标准输入输出,而不要读写文件)
输入数据的第1行有两个整数N,M。N(1<=N<=100)为学院个数(即教学楼个数),M(1<=M<=100)为宿舍楼个数。
紧接着的N行为每个学院的资料,每行有3个整数: 学院楼的位置Xi,Yi(-1000<=Xi,Yi<=1000)和学生数Bi(1<=Bi<=1000)。
再下面的M行为每个宿舍的资料,每行有3个整数: 宿舍的位置Pj,Qj(-1000<=Pj,Qj<=1000)和可以住的学生数Cj(1<=Cj<=1000)。
最后N行为现在学校的分配方案。
每行有M个整数。每个整数Eij(1<=i<=N,1<=j<=M,0<=Eij<=1000)表示第i学院的多少个学生住第j宿舍。
输入的方案一定是有效的,即满足 Bi=Ei1+Ei2+...+Eim, Cj>=(E1j+E2j+...Enj)。
紧接着的N行为每个学院的资料,每行有3个整数: 学院楼的位置Xi,Yi(-1000<=Xi,Yi<=1000)和学生数Bi(1<=Bi<=1000)。
再下面的M行为每个宿舍的资料,每行有3个整数: 宿舍的位置Pj,Qj(-1000<=Pj,Qj<=1000)和可以住的学生数Cj(1<=Cj<=1000)。
最后N行为现在学校的分配方案。
每行有M个整数。每个整数Eij(1<=i<=N,1<=j<=M,0<=Eij<=1000)表示第i学院的多少个学生住第j宿舍。
输入的方案一定是有效的,即满足 Bi=Ei1+Ei2+...+Eim, Cj>=(E1j+E2j+...Enj)。
输出(请使用标准输入输出,而不要读写文件)
若现在的方案是最优的话只要输出一行”yes” (小写字母,不包含引号)。
否则,先输出”no” (小写字母,不包含引号),紧接着输出一个更优越的方案,这个方案可以不是最优的,但一定要比原来的方案更好。
方案的输出格式跟输入的格式一样,有N行。每行M个数字。每个整数Eij(1<=i<=N,1<=j<=M,0<=Eij<=1000)表示第i学院的多少个学生住第j宿舍。
否则,先输出”no” (小写字母,不包含引号),紧接着输出一个更优越的方案,这个方案可以不是最优的,但一定要比原来的方案更好。
方案的输出格式跟输入的格式一样,有N行。每行M个数字。每个整数Eij(1<=i<=N,1<=j<=M,0<=Eij<=1000)表示第i学院的多少个学生住第j宿舍。
样例输入1
样例输出1
3 4
-3 3 5
-2 -2 6
2 2 5
-1 1 3
1 1 4
-2 -2 7
0 -1 3
3 1 1 0
0 0 6 0
0 3 0 2
-3 3 5
-2 -2 6
2 2 5
-1 1 3
1 1 4
-2 -2 7
0 -1 3
3 1 1 0
0 0 6 0
0 3 0 2
no
3 0 1 1
0 0 6 0
0 4 0 1
3 0 1 1
0 0 6 0
0 4 0 1
样例输入2
样例输出2
3 4
-3 3 5
-2 -2 6
2 2 5
-1 1 3
1 1 4
-2 -2 7
0 -1 3
3 0 1 1
0 0 6 0
0 4 0 1
-3 3 5
-2 -2 6
2 2 5
-1 1 3
1 1 4
-2 -2 7
0 -1 3
3 0 1 1
0 0 6 0
0 4 0 1
yes
- 宿舍分配
- 宿舍分配问题
- 分配宿舍委员会解法
- 初中宿舍分分配地址
- SQL存储过程分配宿舍实例
- 宿舍
- 关于宿舍卫生打扫分配工作的程序
- 大话宿舍
- 宿舍停水
- 宿舍聚餐
- 宿舍小聚
- 大学宿舍
- 搬宿舍
- 共享宿舍
- 大学男女生宿舍区别
- MM联谊宿舍
- 大学宿舍梦话大全
- 宿舍上网啦
- [世界杯] 意大利 VS 捷克 2:0 (据说是本届世界杯最有看头的一场)
- 宿舍分配问题
- VC++ 使用气泡提示
- [世界杯] 巴西 vs 日本 4:1
- DIV+CSS 布局入门
- 宿舍分配
- JBoss jBPM 3.1 User Guide翻译计划之一 --- 第一章 介绍
- Adding Icons to the System Tray
- 利用Visual C++实现系统托盘程序
- 利用SEH异常清硬件断点
- 支持圈子建设,我也讨论一下系统整合
- 容器的秘密——进程
- indexOf 方法
- 说事