time:2016.08.09
author:xiaoyimi
傳送門思路:
當時打同步賽的時候
花了3h去做t3提答
大概玩了50分
回來看t1竟然是懵逼狀態……
想了一會,滿腦子都是離散化後差分字首和處理blabla
但不知道怎麼處理區間覆蓋大於m時答案的最優性
(為什麼當時連按區間大小排序的思路都沒有想到?!)
其實按照區間大小排序,那麼答案一定是a[l],a[l+1]..a[r]這些區間的並集,所以我們把i從1列舉到n,同時j=1,操作為
1.每次覆蓋一下區間a[j],看一下有沒有被覆蓋大於等於m的點,如果有就去拿最長區間-最小區間與ans比較,否則++j,繼續看一下有沒有覆蓋大於等於m的點;
2.把a[i]區間去除
覆蓋,去除,檢查大於等於m的點都可以用線段樹的區間覆蓋,單點查詢最大值解決
複雜度o(n
log2
n)常數主要在離散化那裡
希望明年的自己不會滾粗
…… ……
…… 但前提是要先進省隊!!!
…… ……
…… 更大的前提是把3個月後的noip考好!!!
指定區間離散化
有時可以直接根據業務特徵對資料進行離散化,指定需要分割槽的區間或資料點,形成最終的標記資料。假設有一組資料 a 1,3,7,10,23,50 以10,30為分割點,將資料分為三個區間。import pandas as pd a 1,3,7,10,23,50 cut a pd.cut a,0,10,3...
BZOJ4653 Noi2016 區間 線段樹
將所有區間按li ri排序,那麼答案一定是一段連續的區間 有單調性,兩個指標掃 一段區間是合法的當且僅當這個區間中存在乙個點被超過m個區間覆蓋 線段樹維護區間最大值,支援區間加法操作即可 notice l,r達到了1e9,需要離散化 problem 4653 user di4covery langu...
hdu 5481 區間離散 組合
第二個樣例解釋 集合中含有2個區間 乙個是 0,2 編號為1,乙個是 1,3 編號為2。集合的子集有4個 1 空集,集合中區間的並的長度為0 2 集合中區間的並的長度為2 3 集合中區間的並的長度為2 4 集合中區間的並為 0,3 長度為3 考慮某乙個區間對於答案的貢獻 若某個區間沒有被其它區間覆蓋...