前往
大廳
主題

ZeroJudge - g310: pD. 甜甜圈大對決(Donut) 解題心得

Not In My Back Yard | 2021-09-21 00:00:09 | 巴幣 0 | 人氣 296

題目連結:


題目大意:
輸入第一列給定一正整數 N(1 ≦ N ≦ 1000000),代表兩個甜甜圈店家 x 、 y 會各推出 N 個甜甜圈來互相競賽(每個店家的單一一個甜甜圈只會參加一場比賽)。接著一列給定 N 個正整數 xi(1 ≦ xi ≦ 1000000),代表店家 x 將會「依序」派出的參賽甜甜圈之分數。再接著一列給定 N 個正整數 yi(1 ≦ yi ≦ 1000000),代表店家 y 「可以」派出的參賽甜甜圈之分數(可以按任意順序來參賽)。其中兩個店家的甜甜圈分數之給定順序皆為由小到大來給定的。

當有一甜甜圈 xi 與另一甜甜圈 yi 比較時,分數較大者為贏家、分數一樣則平手。

試問店家 y 藉由調整每個甜甜圈負責的比賽場次最多可以贏得多少場比賽?



範例輸入:
3
60 80 100
50 70 90


範例輸出:
2


解題思維:
可以看到要店家 y 要贏比賽需要派出比現在這場比賽店家 x 派出的 xi 還要大,而我們可以利用比最接近 xi 但比 xi 大的 yi 來贏得比賽(因為這樣可以讓較大的 yi 可以用於之後較大的 xi)。

例如範例輸入的
3
60 80 100
50 70 90
當我們遇到 xi = 60 時,我們可以派出 yi = 70 的那個甜甜圈、xi = 80 時可以派出 yi = 90。不過記得一個甜甜圈只能使用於一場比賽中,所以不能重複使用。因此基本上用掉某個位置 yj 的甜甜圈來應付 xi 之後因為下一個店家 x 的甜甜圈 xi+1 會大於等於 xi,因此我們只能使用 yj+1 之後(含)的甜甜圈。

而按照這樣的策略便可以得到所求最大可能贏得比賽場數。




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

創作回應

更多創作