洛谷P2652 同花順

2022-04-02 04:22:35 字數 1333 閱讀 8820

所謂同花順,就是指一些撲克牌,它們花色相同,並且數字連續。

現在我手裡有n張撲克牌,但它們可能並不能湊成同花順。我現在想知道,最少更換其中的多少張牌,我能讓這 n 張牌都湊成同花順?

輸入格式:

第一行乙個整數n,表示撲克牌的張數。接下來n行,每行兩個整數 ai 和 bi。其中ai表示第 i 張牌的花色,bi表示第 i 張牌的數字。

輸出格式:

一行乙個整數,表示最少更換多少張牌可以達到目標。

輸入樣例#1:

5

1 11 2

1 31 4

1 5

輸出樣例#1:

0

輸入樣例#2:

5

1 91 10

2 11

2 12

2 13

輸出樣例#2:

2

資料範圍

對於30%的資料,n<=10。

對於60%的資料,n ≤ 10^5,1 ≤ ai ≤ 10^5,1 ≤ bi ≤ n。

對於100%的資料,n ≤ 10^5,1 ≤ ai, bi ≤ 10^9。

/*

反向思考一下,我們只要求能組成的同花順的最長長度(組成張數)l,再用n減去l即可。

首先我們要思考同花順的性質:花色相同且數字連續。那麼由此我們可以想到什麼呢?大多數人最先想到的大概是排序吧。沒錯,的確需要排序,這是做出這道題的乙個十分重要的基礎。但是同花順還有乙個性質是花色相同,說明這個題排序並不是簡單的排序。該怎麼排序才能求出「顏色相同」的最長單調遞增序列呢?我們可以定義乙個排序法則rule(詳見**),如果兩張牌顏色相同,則將它們按從小到大的順序排序;如果顏色不同,則將他們的顏色編號從小到大排序。

可能會存在花色和數值均相同的撲克牌。這樣就影響了我們求最大序列長度,所以我們必須要通過條件語句來篩出這些牌

我們可以通過列舉所有區間,來判斷哪個區間長度最大且滿足是同色牌&&b[i].y-b[j].y+1<=n

*/#include

#include

#include

using

namespace

std;

intn,ans,cnt;

struct

nodea[

100010],q[100010

];int

cmp(node x,node y)

intmain()

for(int i=1;i<=cnt;i++)

ans=max(ans,tmp);

}printf("%d

",n-ans);

}

洛谷P5049 洛谷P5022 題解 旅行

原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...

洛谷練習P2279 P1346

2020年,人類在火星上建立了乙個龐大的基地群,總共有n個基地。起初為了節約材料,人類只修建了n 1條道路來連線這些基地,並且每兩個基地都能夠通過道路到達,所以所有的基地形成了乙個巨大的樹狀結構。如果基地a到基地b至少要經過d條道路的話,我們稱基地a到基地b的距離為d。由於火星上非常乾燥,經常引發火...

洛谷 P1396 營救

題目描述 咚咚咚 查水表!原來是查水表來了,現在 找這麼熱心上門的查表員啊!小明感動的熱淚盈眶,開起了門 媽媽下班回家,街坊鄰居說小明被一群陌生人強行押上了警車!媽媽豐富的經驗告訴她小明被帶到了t區,而自己在s區。該市有m條大道連線n個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...