Codeforces Round #588 (Div. 2) F. Konrad and Company Evaluation 图论 + 建反图 好题
傳送門
文章目錄
- 題意:
- 思路:
題意:
給你一張nnn個(gè)點(diǎn)mmm條邊的圖,其中每個(gè)點(diǎn)iii初始編號(hào)為iii,邊是有向的,方向?yàn)閺木幪?hào)大的指向編號(hào)小的。定義一個(gè)貢獻(xiàn)為存在某三個(gè)點(diǎn)a,b,ca,b,ca,b,c有兩條邊為a?>b,b?>ca->b,b->ca?>b,b?>c,這個(gè)時(shí)候貢獻(xiàn)為111。有qqq個(gè)詢問(wèn),每次給出一個(gè)點(diǎn)xxx,代表將xxx的編號(hào)變成最大。對(duì)于每次詢問(wèn)輸出當(dāng)前圖的貢獻(xiàn)。
思路:
首先需要知道如何快速的算出貢獻(xiàn)來(lái)。通過(guò)觀察不難發(fā)現(xiàn),bbb作為一個(gè)中間點(diǎn),他的in[b]?out[b]in[b]*out[b]in[b]?out[b]就是bbb作為中間點(diǎn)的貢獻(xiàn)。對(duì)于每個(gè)iii求出來(lái)in[i]?out[i]in[i]*out[i]in[i]?out[i]即為初始的貢獻(xiàn)。
考慮對(duì)于每次修改,我們?nèi)绻芸焖俚恼业疆?dāng)前查詢的點(diǎn)xxx的入邊,那么問(wèn)題就好解決了。
我們可以重新開一個(gè)數(shù)組來(lái)記錄下來(lái),但是實(shí)際上并沒(méi)有必要,我們發(fā)現(xiàn)直接將原圖建反邊,讓后直接跑當(dāng)前點(diǎn)的出邊,這樣就避免了刪除操作,非常巧妙。
這樣的時(shí)間復(fù)雜度也是正確的,題解有證明,比較長(zhǎng)就不多說(shuō)啦。
復(fù)雜度O(qm)O(q\sqrt{m})O(qm?)
總結(jié)
以上是生活随笔為你收集整理的Codeforces Round #588 (Div. 2) F. Konrad and Company Evaluation 图论 + 建反图 好题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux Ftrace介绍与原理
- 下一篇: 中国2023年度电影总票房破500亿元