vijos p1404遭遇战
[spfa][區(qū)間問題]
背景
你知道嗎,SQ Class的人都很喜歡打CS。(不知道CS是什么的人不用參加這次比賽)。
描述
今天,他們在打一張叫DUSTII的地圖,萬惡的恐怖分子要炸掉藏在A區(qū)的SQC論壇服務(wù)器!我們SQC的人誓死不屈,即將于恐怖分子展開激戰(zhàn),準備讓一個人守著A區(qū),這樣恐怖分子就不能炸掉服務(wù)器了。(一個人就能守住??這人是機械戰(zhàn)警還是霹靂游俠?)
但是問題隨之出現(xiàn)了,由于DustII中風景秀麗,而且不收門票,所以n名反恐精英們很喜歡在這里散步,喝茶。他們不愿意去單獨守在荒無人煙的A區(qū),在指揮官的一再命令下,他們終于妥協(xié)了,但是他們每個人都要求能繼續(xù)旅游,于是給出了自己的空閑時間,而且你強大的情報系統(tǒng)告訴了你恐怖份子計劃的進攻時間(從s時刻到e時刻)。
當然,精明的SQC成員不會為你免費服務(wù),他們還要收取一定的傭金(注意,只要你聘用這個隊員,不論他的執(zhí)勤時間多少,都要付所有被要求的傭金)。身為指揮官的你,看看口袋里不多的資金(上頭真摳!),需要安排一個計劃,雇傭一些隊員,讓他們在保證在進攻時間里每時每刻都有人員執(zhí)勤,花費的最少資金。
格式
輸入格式
第一行是三個整數(shù)n(1≤n≤10000),s和e(1≤s≤e≤90000)。
接下來n行,描述每個反恐隊員的信息:空閑的時間si, ei(1≤si≤ei≤90000)和傭金ci(1≤ci≤300000)。
輸出格式
一個整數(shù),最少需支付的傭金,如果無解,輸出“-1”。
樣例1
樣例輸入1
3 1 5
1 3 3
4 5 2
1 1 1
樣例輸出1[復制]
5
限制
提示
敵人從1時刻到4時刻要來進攻,一共有3名反恐隊員。第1名從1時刻到3時刻有空,要3元錢(買糖都不夠??)。以此類推。
一共要付5元錢,選用第1名和第2名。
來源
SQ CLASS公開編程競賽2008——Problem D
Source: WindTalker, liuichou, royZhang
題目思路
這道題的題目可以這樣概括,有一個區(qū)間[s,t],然后有一些小區(qū)間,來覆蓋整個區(qū)間,可以轉(zhuǎn)成求最短路徑,這里我用SPFA。
可是這樣其實建圖很難建,
幾個易錯誤的地方:
1.比如第一個反恐隊員,可以守[1,6],但是6過后時間其他隊員的錢可能比一個[3,~],還要多,所以這個隊員守的過程中是可以換用其他反恐隊員的,,。[很垃圾的我做的時候并沒有想到這個很坑爹的地方,然而這個地方卻是這道題最巧妙的一個地方。QAQ]
處理方法
每一個都建一條反邊回去,代價即為0,i+1到i的邊,這樣的意思就相當于這個時刻,其他隊員即使開始時間在這個時刻前面也可以跳回去用這個更優(yōu)的隊員。
2.這道題給的數(shù)據(jù)范圍是n[1,10000],時刻點是[1,90000],這個范圍一定要注意,開邊應(yīng)該至少開成[90000+10000],n個人的邊加上90000個時刻的反邊,這里的節(jié)點是時刻,,不要弄成人了。,有些別人的代碼邊開的很大,,其實[90000+10000]就夠了。
3.因為這是區(qū)間,不是單純的點,最好的處理區(qū)間的方法就是加一個1,什么意思,1__2__3__4__5__6,比如這是一個區(qū)間,求[1,5],但是這里的時刻其實是一個“__”,所以其實點的話是[1,6].
……..原諒我說了這么多,我只是越寫越覺得這道題很好QAQ…………
。。。祝您AC
總結(jié)
以上是生活随笔為你收集整理的vijos p1404遭遇战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何选择网页更新提醒工具
- 下一篇: 【vijos】在vijos的自己的域中创