hihoCoder 1838 鎕鎕鎕 貪心

2022-04-29 22:09:16 字數 931 閱讀 7618

~~~題面~~~

題解:神奇的貪心題,,,感覺每次做貪心題都無從下手。。。

我們首先按照a對所有卡片從小到大排序,然後從1開始,從連續的兩張牌中取b最大的,最後一張單出來的也取了。

可以證明,這樣的方案一定是合法的。

為什麼呢?

假設我們將排序後的牌按照(1, 2) (3, 4) ……這樣的方式兩兩分組,那麼既然我們每次都是取b最大的那張,b的限制顯然我們已經滿足了。

現在來考慮a,假設我們遇到了最壞的情況,在每一組裡面,我們都取到了a最小的那個,即我們取到了第1, 3, 5,……張牌(因為已經排好序了,所以a最小的一定是這些),那麼這個時候我們可以改變一下分組方式由原來的(1, 2) (3, 4) ……變成1, (2, 3), (4, 5) ……(2 * n, 2 * n + 1),那麼你可以發現,這時我們取的牌就變成了任意組當中a最大的那張,因此a也是滿足條件的。

證明完畢。

1 #include2

using

namespace

std;

3#define r register int

4#define ac 21000056

intn;78

struct

cards[ac];

1112 inline bool

cmp(card x, card y)

1316

17 inline int

read()

1824

25void

pre()

2633

34void

work()

3542 printf("

%d\n

", s[2 * n + 1

].id);43}

4445

intmain()

46

view code

Hihocoder 數列問題

給定乙個長度為n數列a a1,a2,an a 1,a 2,a n a1 a2 an 由於某種原因,小ho對這個數列有些不滿意。他希望每個在數列 現的數值,其出現的次數都是唯一的。假設a 1,1,2,2 1和2都出現了2次,小ho就會不滿意。於是小ho決定從a中刪除一些數,使得每個數值出現次數都是唯一...

hihocoder 字尾陣列

時間限制 5000ms 單點時限 1000ms 記憶體限制 256mb 描述小hi平時的一大興趣愛好就是演奏鋼琴。我們知道乙個 旋律被表示為長度為 n 的數構成的數列。小hi在練習過很多曲子以後發現很多作品自身包含一樣的旋律。旋律是一段連續的數列,相似的旋律在原數列可重疊。比如在1 2 3 2 3 ...

HihoCoder 跑馬圈地

原題鏈結 問題 在乙個m n的矩形中,圈出一塊最大周長為l的連續區域,滿足區域面積盡可能大,同時區域邊界不能落入內部特定的矩形內。分析 1 當周長固定時,圍成正方形覆蓋的面積最大 2 考慮到矩形的對稱性,內部矩形位置 陰影區域 可表示為如下圖所示形式,即滿足 s1 s3 且 s1 s2 且 s3 s...