洛谷201704R1 開心派對小火車

2022-05-22 02:24:11 字數 962 閱讀 9313

oj題號:洛谷p3697

思路:貪心。首先從起點出發,開特急電車,對於每乙個特急車站$s_$,分別下一次車,計算從當前車站$s_$出發坐各停電車在指定時限內$t$最遠能夠到達的車站$r_$,並保證這個$r_$不會超過$s_$。將得到的站點$r_$放入乙個大根堆中,堆中的每個元素記錄兩個值,第乙個用來儲存如果在當前站點開通快速電車,從當前站點坐快速電車總共能到達的站的個數;第二個用來儲存當前站的編號$r_i$。最後不斷地從堆中挑選最優的站,重複拓展到新的站點,並將新的站點放入堆中。用$ans$儲存能夠經過的站的個數,注意最後乙個拓展的站$r$並不能到達,因此$ans$初值為$-1$。

優化:用pb_ds的優先佇列$(3ms)$比stl的優先佇列$(0ms)$快。

1 #include2 #include3 #include4 #include5

const

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...