題意:n個點(<=1e5),m條邊(n-1<=m<=1e5),飛船最開始每次能走長度為0的邊,可以走0次。每公升級一次花費c,一次可以走的長度+d,可以走的次數+e。問最少花費多少能從1走到n。
思路:這道題比賽時讀錯題,導致沒有花很多時間在這道題。其實這題讀懂題後還是比較好做的。要求最少花費,顯然最小花費屬於[1,1e5],所以容易想到二分搜尋答案。然後用bfs得到買m次後經過多少邊能從1到n,不能到達則返回0x3f3f3f3f3f3f3f3f。要注意的是資料範圍,會炸int,wa了很多發qaq。其實不太明白這題-1的情況,因為題目說了圖是連通的,那麼你總可以通過購買足夠的次數來公升級,總能到達。但出題人沒反應,就判斷一下如果結果超出查詢範圍,也就是圖不連通的情況,輸出-1。
ac**:
#include#include#include
#include
using
namespace
std;
typedef
long
long
ll;const
int maxn=1e5+5
;struct
node1a[maxn
<<1
];struct
node2tmp;
inthead[maxn],vis[maxn];
intn,m,c,d,e,cnt;
void add(int u,int v,int
w)ll bfs(
intnum)}}
return
0x3f3f3f3f3f3f3f3f;}
intmain()
int l=1,r=100000
,m;
while(l<=r)
if(l<=100000
) printf(
"%lld\n
",1ll*c*l);
else
printf(
"-1\n");
return0;
}
2019西安邀請賽M Travel(二分 最短路)
傳送門 題意也沒什麼說的,十分明朗,當時做的時候可能有點過於激動了,最後答案忘記了乘c。思路就是先二分公升級的次數,然後就知道了單次的最遠距離和次數,接著把邊權大於單次最遠距離的都砍掉,然後用bfs求一下最短路就ok了。include define int long long define maxn...
2017西安邀請賽總結
我記得前幾天就傳上來了的呀。邀請賽總結 前幾天玩的太浪了,還包了一次宿。休息就跟不上了,正式賽時候腦子一直濛濛的。而且之前想前一天去安排下戰術,然而熱身發揮的比較穩,再加上酒店問題比較大,換房間什麼的浪費很長時間就沒有去安排戰術,正式賽只做的4題,銅牌第6.發揮的很差,全場題總是不出。其實a題正解我...
2019西安邀請賽總結
打鐵了 上來a題我寫的時候過於緊張 以至於慢了好幾分鐘 然後開m 我覺得m就是二分加判斷 出賽場之後一交流確實沒錯,但是我判斷寫的dijistra也不知道 寫錯了 隊友一直在開l zc推錯了規律 最後cly重新按照題目寫了好幾個樣例最後a掉,其實就應該用雜湊儲存集合狀態然後打個表就可以,其實規律題也...