考慮乙個由 $n$ 個人構成的社交網路,其中任意兩人都有乙個用非負整數表示的親密度。
初始時給出 $m$ 對人的親密度,其餘的親密度為 $0$ 。
定義此社交網路的「八卦度」為異性之間的親密度之和。
要求維護三種操作:
修改某人的性別
修改某兩人的親密度
詢問八卦度
操作總數為 $q$ 。
資料範圍:
$1 \le n, m, q \le 100000$
這個社交網路可用乙個無向圖表示,親密度為邊的權值,按邊所連線的兩個點(人)的性別將邊分為「同性邊」和「異性邊」。
先考慮暴力做法:
修改性別或親密度都需要遍歷某個點或某兩個點的臨接邊表,複雜度太高。
乙個優化是,用std::map,int>
維護邊的權值(即親密度);
即便如此,修改性別仍需要遍歷點的鄰接邊表。
正解是:
將無向圖改造成有向圖,邊的方向由「度數小的點」指「向度數大的點」。
用 $c(u)$ 表示 $u$ 的出邊的數目。
對每個點 $u$ 維護兩個值 $s_1$, $s_2$,分別表示指向 $u$ 的邊中同性邊的權值之和 和 異性邊的權值之和。
這樣,對於改變點 $u$ 性別的操作,需要:
交換 $s_1[u]$ 和 $s_2[u]$ 。
對 $u$ 的出邊指向的點 $v$,修改 $s_1[v]$ 和 $s_2[v]$ 。
複雜度為 $o(c(u))$
對於修改親密度的操作,首先找到對應的那條邊 $(u,v)$,修改其權值,再更新 $s_1[v]$ 和 $s_2[v]$ 。
複雜度為 $o(c(u) + c(v))$
下面證明 $c(u) = o(\sqrt) $,$m$ 是邊數。
證明:點 $u$ 的出邊指向的點的總度數為 $\sum_$,
有$2m > \sum_ d(v) \ge c(u) d(u) \ge c(u)^2 $
即$c(u) < \sqrt$
所以 $c(u) = o(\sqrt)$ 。
上述證明裡所考慮的圖是靜態的。對於這個題目,我們可以採用離線的方式,將動態圖轉化成靜態圖,但這樣就增加了程式設計複雜度。
下面考慮在動態添邊的情況下是否還有類似的結論。
為了便於描述,我們把 $u$ 的出邊所指向的點稱作 $u$ 的「出鄰點」,將 $u$ 的出鄰點的集合記作 $n^-(u)$,則 $c(u) = |n^-(u)|$ 。
令 $d(n^-(u)) = \sum_ d(v)$ 。
考慮往途中增加一條(有向)邊 $(u,v)$ 之後的情形:
$d(u) \to d(u)+1$
$d(n^-(u))$ 的增量 $\delta$ 滿足
$\delta \ge d(u) + 1 $
所以$2m > d(n^-(u)) \ge 1 + 2 + 3 + \dots + c(u)$
同樣有$c(u) = o(\sqrt)$
籃球勝八卦
想不到,最新的娛樂八卦竟是來自籃球。下面是摘自網易的幾個新聞 曝張慶鵬被遼寧隊裁員 本賽季或無緣再登cba賽場 郭士強 要麼張慶鵬走要麼我走 晚上就知道結果了 球員紛紛微博力挺張慶鵬 易建聯 他至少有權轉會 遼寧將帥爭峰迴路轉 郭士強下課張慶鵬鐵定留隊 張慶鵬年薪埋下隱患 郭士強曾放話 看我怎麼整他...
八卦「潛規則」
最近鄭沛芳自爆和鳳凰衛視的恩恩怨怨應該算比較熱門的八卦之一,裡面涉及竇文濤 劉長樂,鄭最近有解釋說要潛規則她的和劉竇二人無關,熱熱鬧鬧,頗有談資。說來說去還是 潛規則 這個詞火起來好像是某女爆某黃姓導演 潛規則 該女子後並未答應之前的條件,並有xx錄影為證,果然是八卦爆點到沒話說,潛規則 於是大火。...
熊貓燒香八卦
熊貓以香為本 熊貓恆久遠,燒香永流傳。讓我們做得更好。飛利浦電子 讓熊貓燒得更香。傳奇世界,無限可能。盛大傳奇世界經典宣傳詞 熊貓燒香,死路一條。只管去做。耐克運動鞋 讓我們做得更好。飛利浦電子 讓熊貓燒得更香。傳奇世界,無限可能。盛大傳奇世界經典宣傳詞 熊貓燒香,死路一條。桑塔納 熊貓擁有桑塔納走...