切換
舊版
前往
大廳
主題

ZeroJudge - a559: NCPC PC Matrix 解題心得

Not In My Back Yard | 2019-08-01 22:58:10 | 巴幣 2 | 人氣 257

題目連結:


題目大意:
第一列輸入給定一正整數,代表接下來有多少筆的測試資料。每筆測試資料的開頭第一列給定兩正整數 m 、 n (2 ≦ m ≦ 2500,1 ≦ n ≦ 20),代表接著的 m 列輸入,每列有 n 個正整數(值皆介於 1 ~ 50, 000 之間),代表 m 個集合的內容。

因為是集合,所以裡面元素的相對位置可以隨意調動。

現在使用這些集合形成一個矩陣,每個挑出的集合中的元素排列代表矩陣中的一列(Row)。該矩陣必須滿足:
對於每個兩兩相鄰的列,上面的列中的元素皆小於下面的列中的每個對應元素。

求該矩陣最多可以有幾列?



範例輸入:
2
2 3
6 3 5
1 4 2
3 2
3 1
2 4
6 5


範例輸出:
2
3


解題思維:
因為集合內的元素可以隨意交換位置,因此我們先將其由小到大排序。

接著我們將每個集合按照字典序(元素排序之後,比較元素的大小,原理跟字串比較相同)排列。

最後求這些集合的 LIS (Longest Increasing Subsequences,最長遞增子序列)即可求得所求陣列的最大列數。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作