PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Prob_Solve
[解決] 紅白彩帶 (APCS201902)
作者:
fatcat8127
(胖胖貓)
2020-11-08 01:33:57
題目 https://judge.tcirc.tw/ShowProblem?problemid=d101
給定彩帶的長度 N 和每一格的顏色(0=白,1=紅),K次的著色(保證會在白色格子塗紅),
輸出的兩個數字分別為每次著色後最長和最短的紅色區間長度總和。
這題會用到 DSU 連通的概念,維護每次著色後最長的紅色區間長度問題不大。
但問題點在於維護最短區間長度。
因為著色的關係,導致最多2個區間合併,代表 RootID 的長度會被改變。
又因為格子個數最多會有 1e5 個,暴力法理論上應該不可行。
我只想到 Mapping HEAP 這個資料結構(不確定有沒有這種東西...)。
基礎的 HEAP 資料結構加上一個映射陣列( mapp[RootID]=這個 RootID在HEAP的位置 )
這個 HEAP 只維護 每個 Group 的代表ID 並且依照長度維護(越小越上層)。
保證某個 RootID 長度被改變時是 ㏒N (HeapDown),
或是因為區間合併導致需要刪除某個存在 HEAP 內的 RootID 時是 ㏒N (HeapUp+Down)。
不過考慮到這題屬 APCS,應該存在某種合理的資料結構應付上述需求?
至少不是要當場寫這種 Mapping HEAP吧...
最後附上程式碼:https://www.codepile.net/pile/NG2lD4rl
※ 編輯: fatcat8127 (61.222.86.91 臺灣), 11/08/2020 01:57:38
※ 編輯: fatcat8127 (101.12.22.166 臺灣), 11/08/2020 03:36:07
作者:
ckc1ark
(偽物)
2020-11-08 12:30:00
不一定要改heap現有的 放新產生的頭尾進去即可
作者:
ucrxzero
(RX-0)
2020-11-08 15:03:00
跨謀
作者:
ckc1ark
(偽物)
2020-11-09 00:26:00
我heap存的是(len, left, right) 再用輔助的array很快就知道目前看到這個是不是過時的反正n變兩倍不影響heap複雜度
https://tinyurl.com/y6gwpfyp
我的意思是這樣combo裡的值存每段紅色彩帶的長度(僅兩端) 非兩端不重要
作者:
ucrxzero
(RX-0)
2020-11-09 15:56:00
好想跟著寫但我連leetcode 都快寫不完了
作者:
DJWS
(...)
2020-11-11 10:40:00
O(nk)不行嗎? 那就O(kk)吧! 排序所有區間、插入排序法O(kk)不行嗎? 那就O(klogn)吧! 來一發線段樹就搞定了O(klogn)不行嗎? 那就O(klogk)吧! 二元樹紀錄所有區間
繼續閱讀
[問題] 定積分問題
M013020058
[解決] 01背包的分堆變形題
fatcat8127
[解決] ZeroJudge-c271 疊疊樂(Easy)
fatcat8127
[問題] 立方體之排列組合問題
ab850726
[問題] 將零矩陣轉為特定矩陣
obelisk0114
[問題] UVa11865 Directed Graph的MST
darrenlee1
[問題] 哪些問題是程式碼問題 哪些是程式問題
hayuyang
[問題] 一般樹和二元樹轉換觀念
fightforlive
[問題] 關於運算式的相等
nevikw39
[問題] 數字分成 k組 最小化最大值
s89162504
Links
booklink
Contact Us: admin [ a t ] ucptt.com