P3980 NOI2008志愿者招募
生活随笔
收集整理的這篇文章主要介紹了
P3980 NOI2008志愿者招募
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
志愿者招募
題目鏈接
https://www.luogu.org/problemnew/show/P3980
題解
這道題很神奇,這種建圖方法很有啟發(fā)性.
我們平時做的題都點都是是一對一的,而這道題的點的對應(yīng)關(guān)系是一對多(即一個志愿者對應(yīng)一段連續(xù)的區(qū)間,也就是多個時間點)的,直接按照傳統(tǒng)的網(wǎng)絡(luò)流建圖方法來做是不可行的.因此,我們考慮轉(zhuǎn)化一下思維.
考慮從原點出發(fā)的一個流量代表一個志愿者,那么一個志愿者可以連續(xù)干一段區(qū)間意味著這個流量可以跨過一段時間點.因此一個志愿者可以表示為si→ti+1s_i \rightarrow t_i+1si?→ti?+1的一條容量為infinfinf,費用為cic_ici?的邊.
第i→i+1i \rightarrow i+1i→i+1天,我們連接一條容量為INF?aiINF-a_iINF?ai?,費用為000的邊,表示的是免費的志愿者.
這樣優(yōu)先會流的時候會優(yōu)先選擇這樣的邊流過去,當流量不足的時候,會選擇從有費用的邊流,表示增添志愿者.
總結(jié)
以上是生活随笔為你收集整理的P3980 NOI2008志愿者招募的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (linux设置root)
- 下一篇: Uva12325 Zombie's Tr