【ACM】会场安排问题
生活随笔
收集整理的這篇文章主要介紹了
【ACM】会场安排问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
會場安排問題
時間限制:3000?ms ?|? 內存限制:65535?KB 難度:3 描述每組測試數據的第一行是一個整數n(1<n<10000)表示該測試數據共有n個活動。
隨后的n行,每行有兩個正整數Bi,Ei(0<=Bi,Ei<10000),分別表示第i個活動的起始與結束時間(Bi<=Ei)
每組的輸出占一行
?
思路:一開始搞混了,又是開始時間和結束時間,想多了,還去考慮開始時間一樣,消耗的時間不一樣的問題,其實想法一開始就錯誤了。
使用結構體,直接按照活動的結束時間來排序就可以了,后面遍歷的時候用個指針指向當前的活動,判斷當前的活動的結束時間是否比下一個活動的開始時間還小就可以了
必須按結束的時間來排序1 1002 1011 20這一組的答案就可以清楚看到,如果按照開始時間來排序,答案是1,而正確答案是2#include <iostream> #include <algorithm> #include <string> #include <cstdio>using namespace std;struct Game{int begin;int end;int cost; };bool cmp(Game a, Game b){if (a.end < b.end){return true;} else{return false;} }int main(){int m,n;cin>>n;while (n--){cin>>m;Game *games = new Game[m];for (int i = 0; i < m; ++i) {cin>>games[i].begin>>games[i].end;games[i].cost = games[i].end - games[i].begin;}sort(games, games+m, cmp);int sum = 1;int cur = 0;for (int j = 1; j < m; ++j) {if (games[cur].end < games[j].begin){cur = j;sum++;}}cout<<sum<<endl;}return 0; }
?
轉載于:https://www.cnblogs.com/lyc94620/p/9613789.html
總結
以上是生活随笔為你收集整理的【ACM】会场安排问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (干货)构建镜像之docker comm
- 下一篇: 作业一(高见老师收)