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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息学奥赛一本通(1323:【例6.5】活动选择)

發布時間:2025/3/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息学奥赛一本通(1323:【例6.5】活动选择) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1323:【例6.5】活動選擇


時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 10673 ??? 通過數: 5828

【題目描述】

學校在最近幾天有n個活動,這些活動都需要使用學校的大禮堂,在同一時間,禮堂只能被一個活動使用。由于有些活動時間上有沖突,學校辦公室人員只好讓一些活動放棄使用禮堂而使用其他教室。

現在給出n個活動使用禮堂的起始時間 begini 和結束時間 endi(begini

【輸入】

第一行一個整數n(n≤1000);

接下來的n行,每行兩個整數,第一個begini,第二個是endi(begini

【輸出】

輸出最多能安排的活動個數。

【輸入樣例】

11 3 5 1 4 12 14 8 12 0 6 8 11 6 10 5 7 3 8 5 9 2 13

【輸出樣例】

4

【分析】

? ? ? ? 算法模型∶給 n 個開區間(begini,endi),選擇盡量多的區間,使得兩兩不交。
? ? ? ? 做法:首先按照 endl<=end2<=…<=endn 的順序排序,依次考慮各個活動,如果沒有和已經選擇的活動沖突,就選;否則就不選。

? ? ? ? 正確性:如果不選 endl,假設第一個選擇的是endi,則如果 endi 和 end1 不交叉則多選一個 end1 更劃算;如果交叉則把 endi 換成 end1 不影響后續選擇。

【參考代碼】

#include <stdio.h> #define N 1010 struct schedule {int begin; //開始時間 int end; //結束時間 }meet[N],t;int main() {int i,j,n,ans=1,record;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d%d",&meet[i].begin,&meet[i].end);for(i=0;i<n-1;i++) //比較排序 { for(j=i+1;j<n;j++){ if(meet[i].end > meet[j].end){t=meet[i];meet[i]=meet[j];meet[j]=t;}}}record=meet[0].end; //第一個結束時間 for(i=1;i<n;i++){if(meet[i].begin >= record) //開始時間不沖突 {ans++;record=meet[i].end; //更新結束時間}}printf("%d\n",ans);return 0; }

http://ybt.ssoier.cn:8088/problem_show.php?pid=1323

總結

以上是生活随笔為你收集整理的信息学奥赛一本通(1323:【例6.5】活动选择)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。