有乙個m
mm行n
nn列的教室座位中,有d
dd對同學總愛湊在一起講話。現老師要用走廊隔開他們。但只能在行之間加入k
kk條走廊,在列中加入l
ll條走廊,問加在**能使效果最佳。(一對愛講話的同學只有左右相鄰或上下相鄰)。
輸入格式
第一行,有5
55個用空格隔開的整數,分別是m,n
,k,l
,dm,n,k,l,d
m,n,k,
l,d。
接下來d
dd行,每行有4
44個用空格隔開的整數,第i
ii行的4
44個整數xi,
yi,p
i,qi
x_i,y_i,p_i,q_i
xi,yi
,pi
,qi
,表示坐在位置(xi,
yix_i,y_i
xi,yi
)與(pi,
qip_i,q_i
pi,qi
)的兩個同學會交頭接耳(輸入保證他們前後相鄰或者左右相鄰)。
輸入資料保證最優方案的唯一性。
輸出格式
共兩行。
第一行包含k
kk個整數,a1a
2…ak
a_1 a_2 … a_k
a1a2
…ak
,表示第a
1a_1
a1行和a1+
1a_1+1
a1+
1行之間、第a
2a_2
a2行和第a2+
1a_2+1
a2+
1行之間、…、第a
ka_k
ak行和第ak+
1a_k+1
ak+
1行之間要開闢通道,其中ai+1
a_iai+
1,每兩個整數之間用空格隔開(行尾沒有空格)。
第二行包含l
ll個整數,b1b
2…bk
b_1 b_2 … b_k
b1b2
…bk
,表示第b
1b_1
b1列和b1+
1b_1+1
b1+
1列之間、第b
2b_2
b2列和第b2+
1b_2+1
b2+
1列之間、…、第b
lb_l
bl列和第bl+
1b_l+1
bl+
1列之間要開闢通道,其中bi+1
b_ibi+
1,每兩個整數之間用空格隔開(行尾沒有空格)。
若有多組答案,輸出字典序最小的一組。
資料規模2≤n
,m≤1000
2 ≤ n,m\le1000
2≤n,m≤
1000,0≤
k<
m0 \le k0≤
k0 ≤l
d≤2000
0\le l0≤
ld≤20
00輸入樣例
4 5 1 2 3
4 2 4 3
2 3 3 3
2 5 2 4
輸出樣例2
2 4提示
上圖中用符號*、※、+標出了 3
33 對會交頭接耳的學生的位置,圖中 3
33 條粗線的位置表示通道,圖示的通道劃分方案是唯一的最佳方案。
根據題目描述,可以在行之間和列之間插入走廊、隔開說話的同學,問加在**能使效果最佳。不妨以行為例,當然是在上下相鄰且交頭接耳人數最多的k
kk行插入走廊效果最佳。例如對於輸入樣例,在(2,
3)、(
3,3)
(2,3)、(3,3)
(2,3)、
(3,3
)兩個同學之間(即第2
22行)插入走廊,效果最佳。
因此,我們可以遍歷所有交頭接耳的兩位同學,統計他們出現在行列中的次數row
[i]、
col[
i]row[i]、col[i]
row[i]
、col
[i]。不妨設他們的位置為(x1
,y1)
、(x2
,y2)
(x1, y1)、(x2, y2)
(x1,y1
)、(x
2,y2
):統計完畢後,分別對行列按次數排序,排序後取前k
kk行和前l
ll列即可。
排序演算法的時間複雜度為o(n
logn
)=1000×l
og(1000
)o(nlogn) = 1000 \times log(1000)
o(nlog
n)=1
000×
log(
1000
)。
#include
#include
using namespace std;
typedef pair<
int,
int> pii;
const
int n =
1010
;//row[i].first表示行號,row[i].second表示該行相鄰同學的個數
//col[i].first表示列號,col[i].second表示該列相鄰同學的個數
pii row[n]
, col[n]
;int
cmp(pii x, pii y)
intmain()
else
//相同行
}//按出現次數從大到小排序
sort
(row +
1, row + n +
1, cmp)
;//對前k個數按行號從小到大排序
sort
(row +
1, row + k +1)
;for
(int i =
1; i <= k; i ++
)//按出現次數從大到小排序
sort
(col +
1, col + m +
1, cmp)
;//對前l個數按列號從小到大排序
sort
(col +
1, col + l +1)
;for
(int i =
1; i <= l; i ++
)return0;
}
NOIP2008普及組題解
noip2008普及組題解 從我在其他站的部落格直接搬過來的 posted 2016 04 16 01 11 t1 isbn號碼 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識別碼和3位分隔符,其規定格式如 x xx x 其中符號 就是分隔符 鍵盤上的減號 最後一位...
NOIP2008 普及組 T3 傳球遊戲
上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同...
NOIP2008普及組 排座椅
問題描述 上課的時候總有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的d對同學上課時會交頭接耳。同學們在教室中坐成了m行n列,坐在第i行第j列的同學的位置是 i,j 為了方便同學們進出,在教室中設定了k...