日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Bzoj1029 [JSOI2007]建筑抢修

發(fā)布時(shí)間:2023/12/31 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Bzoj1029 [JSOI2007]建筑抢修 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Time Limit:?4 Sec??Memory Limit:?162 MB
Submit:?4452??Solved:?2006

Description

  小剛在玩JSOI提供的一個(gè)稱之為“建筑搶修”的電腦游戲:經(jīng)過了一場(chǎng)激烈的戰(zhàn)斗,T部落消滅了所有z部落的
入侵者。但是T部落的基地里已經(jīng)有N個(gè)建筑設(shè)施受到了嚴(yán)重的損傷,如果不盡快修復(fù)的話,這些建筑設(shè)施將會(huì)完全
毀壞。現(xiàn)在的情況是:T部落基地里只有一個(gè)修理工人,雖然他能瞬間到達(dá)任何一個(gè)建筑,但是修復(fù)每個(gè)建筑都需
要一定的時(shí)間。同時(shí),修理工人修理完一個(gè)建筑才能修理下一個(gè)建筑,不能同時(shí)修理多個(gè)建筑。如果某個(gè)建筑在一
段時(shí)間之內(nèi)沒有完全修理完畢,這個(gè)建筑就報(bào)廢了。你的任務(wù)是幫小剛合理的制訂一個(gè)修理順序,以搶修盡可能多
的建筑。

Input

  第一行是一個(gè)整數(shù)N接下來N行每行兩個(gè)整數(shù)T1,T2描述一個(gè)建筑:修理這個(gè)建筑需要T1秒,如果在T2秒之內(nèi)還
沒有修理完成,這個(gè)建筑就報(bào)廢了。

Output

  輸出一個(gè)整數(shù)S,表示最多可以搶修S個(gè)建筑.N < 150,000;? T1 < T2 < maxlongint

Sample Input

4
100 200
200 1300
1000 1250
2000 3200

Sample Output

3

HINT

Source

?

貪心

憑感覺盲狙了兩個(gè)貪心方案:

1、按結(jié)束時(shí)間排序,能修就修。不能修的時(shí)候,如果不修之前耗時(shí)最多的那個(gè)就能讓這個(gè)被修好,就用這個(gè)替換耗時(shí)最多的建筑。

WA

2、發(fā)現(xiàn)并不需要當(dāng)前這個(gè)一定被修好,只要用這個(gè)替換之前耗時(shí)最多的,能讓累計(jì)耗時(shí)減少,就替換。

AC

1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 #include<queue> 8 #include<vector> 9 #define LL long long 10 using namespace std; 11 const int mxn=200010; 12 int read(){ 13 int x=0,f=1;char ch=getchar(); 14 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 15 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 16 return x*f; 17 } 18 struct task{ 19 int t1,t2; 20 }a[mxn]; 21 int cmp(const task a,const task b){ 22 return a.t2<b.t2; 23 } 24 priority_queue<int>q; 25 int n; 26 int ans=0; 27 int main(){ 28 int i,j; 29 n=read(); 30 for(i=1;i<=n;i++){ 31 a[i].t1=read();a[i].t2=read(); 32 } 33 sort(a+1,a+n+1,cmp); 34 int now=0; 35 for(i=1;i<=n;i++){ 36 if(a[i].t1+now<=a[i].t2){ 37 now+=a[i].t1; 38 q.push(a[i].t1); 39 ++ans; 40 } 41 else if(!q.empty()){ 42 int tmp=q.top(); 43 if(tmp>a[i].t1){ 44 now=now-tmp+a[i].t1; 45 q.pop(); 46 q.push(a[i].t1); 47 } 48 } 49 } 50 printf("%d\n",ans); 51 return 0; 52 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/SilverNebula/p/6639887.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Bzoj1029 [JSOI2007]建筑抢修的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。