宿舍分配問題

2021-04-08 12:08:12 字數 1917 閱讀 5353

宿舍分配

程式檔名

: school.cpp/school.pas/...

乙個很有名的大學

nku裡有不少的教學樓和宿舍樓。

學校為了學生們的切身利益著想,希望能有乙個好的分配方案,使得每天早上學生們去上課所要走的路程總和最小。

為了簡化問題,我們假設

1.

每個教學樓都屬於乙個學院,而且每個學院只有乙個教學樓

2.

每天早上第一節每個學生都有課,且這個課是在自己學院樓裡上的專業課。

3.

如圖所示,宿舍的位置為

(pj,qj),

學院樓的位置為

(xi,yi)

時,這兩個樓的距離

dij由下面的公式來決定。

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)。

輸出 (請使用標準輸入輸出,而不要讀寫檔案)

若現在的方案是最優的話只要輸出一行

」yes」

(小寫字母,不包含引號)。

否則,先輸出

」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 no

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

yes

暫無答案

C語言自動分配宿舍問題

流程圖題外話 1.不重複隨機數的生成 2.結構體以及在函式模組中的呼叫 3.如何命名宿舍房間號 這是我的第一篇文章 作為乙個苦逼的大二轉專業狗,脫離了生物的溫床,扎入一望無際的計算機的汪洋中,我彷彿已經看到了眼前無數的坑在等著自己 事實上已經遇到了 作為乙個c自學沒多久的人,我並不想為自己的菜找理由...

宿舍管理系統 高校宿舍管理系統

本系統的主要功能為 樓棟管理員管理 宿舍管理 學生登記入住管理 學生遷出管理 學生寢室調換管理 學生缺勤記錄管理 學生管理 學生上報維修 學生維修記錄。作業系統 windows 10 資料庫系統 sql server資料庫 可用記憶體 建議至少4096m 作業系統 windows 7 8 10 可用...

宿舍管理查詢系統 宿舍管理系統

一 基礎功能簡介 初始登入 角色 管理員 宿舍樓資訊管理 匯入學生資訊管理 匯入離校重置 修改刪除 查詢職工資訊管理 匯入新增重置 修改刪除 查詢宿管 個人資訊管理 個人資訊 修改密碼 學生資訊查詢 保修單管理 未處理報修單 查詢 處理 批量處理 處理中報修單 查詢 處理 歷史報修單 查詢 匯出 假...