所謂同花順,就是指一些撲克牌,它們花色相同,並且數字連續。
現在我手裡有n張撲克牌,但它們可能並不能湊成同花順。我現在想知道,最少更換其中的多少張牌,我能讓這 n 張牌都湊成同花順?
輸入格式:
第一行乙個整數n,表示撲克牌的張數。接下來n行,每行兩個整數 ai 和 bi。其中ai表示第 i 張牌的花色,bi表示第 i 張牌的數字。
輸出格式:
一行乙個整數,表示最少更換多少張牌可以達到目標。
輸入樣例#1:
51 11 2
1 31 4
1 5
輸出樣例#1:
0
輸入樣例#2:
51 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個區,一條大道將兩個區相連線,每個大道有乙個擁擠度。小明的媽媽雖然...