洛谷 P1056 排座椅 題解

2021-08-31 07:05:44 字數 1422 閱讀 2943

我終於走進了普及組的大門

這是一道很水的排序題,矩陣大小限制在1000*1000內,所以用桶排很容易解決

然後先按照每行能隔開多少對同學cnt排序

排序之後還要對序號num排序,因為答案要求公升序輸出(洛谷的排版有點問題,第一次沒有看明白條件wa掉了)

用了stdlib裡的qsort()

#include

#include

#define _for(i,j,k) for(int i=j;i#define _rep(i,j,k) for(int i=j;i<=k;i++)

typedef

struct

buk;

buk k[

1002]=

,l[1002]=

;int

cmp(

const

void

*a,const

void

*b)//對同學對數進行排序

intcmp2

(const

void

*a,const

void

*b)//對輸出的答案排序號

intmain()

int m,n,k,l,d;

scanf

("%d%d%d%d%d"

,&m,

&n,&k,

&l,&d)

;int x1,y1,x2,y2;

_for

(i,0

,d)qsort

(k+1

,999

,sizeof

(buk)

,cmp)

;//見正文

qsort

(k+1

,k,sizeof

(buk)

,cmp2)

;qsort

(l+1

,999

,sizeof

(buk)

,cmp)

;qsort

(l+1

,l,sizeof

(buk)

,cmp2)

;_for

(i,1

,k)printf

("%d "

,k[i]

.num)

;printf

("%d\n"

,k[k]

.num)

;//題目要求行尾不能有空格

_for

(i,1

,l)printf

("%d "

,l[i]

.num)

;printf

("%d"

,l[l]

.num)

;return0;

}

洛谷 P1056 排座椅

題目描述 上課的時候總會有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的d對同學上課時會交頭接耳。同學們在教室中坐成了m行n列,坐在第i行第j列的同學的位置是 i,j 為了方便同學們進出,在教室中設定了...

洛谷P1056 排座椅

上課的時候總會有一些同學和前後左右的人交頭接耳,這是令小學班主任十分頭疼的一件事情。不過,班主任小雪發現了一些有趣的現象,當同學們的座次確定下來之後,只有有限的d對同學上課時會交頭接耳。同學們在教室中坐成了m行n列,坐在第i行第j列的同學的位置是 i,j 為了方便同學們進出,在教室中設定了k條橫向的...

洛谷P1056 排座椅

先上題目鏈結 注釋寫得多,直接貼 了 include include include using namespace std intmain else if ay by for i 1 i k i 退出這個迴圈時p為分割最大的線的下標 horizontal tmp false 求出一條分割最多的線後...