我終於走進了普及組的大門
這是一道很水的排序題,矩陣大小限制在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 求出一條分割最多的線後...