帶權並查集,和那個how many answer are wrong差不多,衝啊!
嗯?怎麼寫了一發後mle了????
哦哦,原來還要離散化!
嗯?怎麼離散化後還是wa?
哦哦,原來我的ans沒有初始值為k(每乙個詢問都是正確的情況)
嗚嗚嗚我好傻
就是給你乙個n(0帶權並查集啊,只不過n太大了,存不下,得先離散化
離散化,將數存到陣列裡,排序 -> 去重 -> 二分查詢
排序就sort就行,去重有個 unique函式,二分查詢就lower_bound
然後就老帶權並查集了,區間的左端要開區間(類似字首似的 喵喵喵??)
#include
using
namespace std;
typedef
long
long ll;
const
int inf =
0x3f3f3f3f
;const ll inf =
0x3f3f3f3f3f3f3f3f
;#define pq priority_queue
#define eps 1e-10
#define pi acos(-1.0)
int n, k;
int ok, ans;
int cnt;
const
int maxn =
20005
;char s[maxn][10
];int l[maxn]
;int a[maxn]
, b[maxn]
, fa[maxn]
, d[maxn]
;int
find
(int x)
void
init()
}void
union
(int x,
int y,
int val)
else}}
intmain()
sort
(l, l + cnt)
;init()
; cnt =
unique
(l, l + cnt)
- l;
ans = k;
for(
int i =
1; i <= k; i++)}
else}}
printf
("%d\n"
, ans)
;return0;
}
codeforces 940F 離散化 帶修莫隊
折騰了一下午的一道題 算是徹底明白了莫隊的本質 這題難點在於怎麼構造o 1 轉移 選擇用兩個陣列 乙個v陣列 記錄出現次數為i次的數有多少個 乙個num陣列 記錄i這個數出現的次數 這樣就可以實現o 1 轉移 其實這樣構造有乙個地方不好處理 如何o 1 處理出當前詢問的答案 後來造了一些資料發現直接...
poj 1733 帶權並查集 離散化
思路 這題一看就想到要用並查集做了,不過一看資料這麼大,感覺有點棘手,其實,我們仔細一想可以發現,我們需要記錄的是出現過的節點到根節點的1個奇偶性,這與區間端點的大小並沒有關係,於是想到我們可以用map對映即可,這樣就解決了大資料了。此外,如果0表示出現偶數個1,1表示出現奇數個1,然後就是向量偏移...
離散化問題
題目傳送 uvalive 4127 the sky is the limit 大白書離散化簡單題。找了半天錯誤,居然是少輸出乙個空行。頓時感覺自己萌萌噠。其中計算幾何是套的之前留下的模板。ac include include include include include include inclu...