oj題號:洛谷p3697
思路:貪心。首先從起點出發,開特急電車,對於每乙個特急車站$s_$,分別下一次車,計算從當前車站$s_$出發坐各停電車在指定時限內$t$最遠能夠到達的車站$r_$,並保證這個$r_$不會超過$s_$。將得到的站點$r_$放入乙個大根堆中,堆中的每個元素記錄兩個值,第乙個用來儲存如果在當前站點開通快速電車,從當前站點坐快速電車總共能到達的站的個數;第二個用來儲存當前站的編號$r_i$。最後不斷地從堆中挑選最優的站,重複拓展到新的站點,並將新的站點放入堆中。用$ans$儲存能夠經過的站的個數,注意最後乙個拓展的站$r$並不能到達,因此$ans$初值為$-1$。
優化:用pb_ds的優先佇列$(3ms)$比stl的優先佇列$(0ms)$快。
1 #include2 #include3 #include4 #include5const
int maxm=3002
;6 typedef long
long
ll;7 ll n,m,k,a,b,c,t,s[maxm],r[maxm],ans=-1
,i;8 __gnu_pbds::priority_queueint,int> >pq;
9 inline void push(const
inti)
15 ll ri=r[i];
16 r[i]=std::min(r[i]+v/a+1,s[i+1
]);17 pq.push(std::make_pair(r[i]-ri,i));18}
19int
main()
25 s[m+1]=n;
26for(i=1;(i<=m)&&(s[i]*b<=t);i++)
31for(i=k-m;i--;)
36 printf("
%lld
",ans);
37return0;
38 }
開心的金明(洛谷)
問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過 n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的 n 元。於是,他把每件物品規定了...
開心的金明 洛谷 1060
題目描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要...
洛谷 1060 開心的金明
金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5...