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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

活动选择

發布時間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 活动选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

D14554. 活動選擇

時間限制1.0s ? 內存限制256.0MB ? 代碼提交間隔1分鐘(現在可以提交) ?

輸入文件名:test.in ? 輸出文件名:test.out

問題描述

  假設有一個需要使用某一資源的n個活動組成的集合S,S={1,…,n}。該資源一次只能被一個活動所占用,每一個活動有一個開始時間bi和結束時間ei(bi<=ei)。若bi>ej或者bj>ei,則活動兼容。
  你的任務是:選擇由互相兼容的活動組成的最大集合中元素的個數。

輸入格式

  共n+1行,其中第1行為n,第2行到第n+1行表示n個活動的開始時間和結束時間(中間用空格隔開),格式為:
  n
  b1 e1
  ……
  bn en
  (注:所有數據不超過整型)

輸出格式

  一個整數,表示可以兼容活動的最大個數。

樣例輸入

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

樣例輸出

4

?

思路:

各個區間不能重疊。

貪心策略:

按照結束時間排序,記錄當前最后結束時間,判斷第i區間是否可以選中,若可以修改最大結束時間的值,ans+1,反之不理它。

證明:

當前有第一個區間和第i個區間,如若兩者不沖突,都可以選中,自然能多選,反之第一個區間結束時間更早,影響后續選擇的可能就小,如此必選靠前的區間。
實現時使用pair定義結構體,排序時可以默認優先級。

Code:

#include<bits/stdc++.h>#define e first#define b secondusing namespace std;int n, ans = 0;pair <int, int> act[100010];int main(){freopen("test.in","r",stdin);freopen("test.out","w",stdout);cin >> n;for (int i = 1; i <= n; i++)cin >> act[i].b >> act[i].e;sort(act + 1, act + n + 1);int last = 0;for (int i = 1; i <= n; i++) {if (act[i].b > last) {ans++;last = act[i].e;}/沖突性判斷}cout << ans << endl;return 0;}

?

轉載于:https://www.cnblogs.com/sun915/p/9494077.html

總結

以上是生活随笔為你收集整理的活动选择的全部內容,希望文章能夠幫你解決所遇到的問題。

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