【动态规划】大厅安排 (ssl 1212)
生活随笔
收集整理的這篇文章主要介紹了
【动态规划】大厅安排 (ssl 1212)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
大廳安排大廳安排大廳安排
Description
有一個演講大廳需要GEORGE管理,演講者們事先定好了需要演講的起始時間和中止時間。GEORGE想讓演講大廳得到最大可能的使用。我們要接受一些預定而拒絕其他的預定,目標自然是使演講者使用大廳的時間最長。為方便起見,假設在某一時刻一個演講結束,另一個演講就可以立即開始。
計算演講大廳最大可能的使用時間。
Input
第一行為一個整數(shù)n,n <= 100,表示申請的數(shù)目。
Output
一個整數(shù),表示大廳最大可能的使用時間。
Sample Input
12
1 2
3 5
0 4
6 8
7 13
4 6
9 10
9 12
11 14
15 19
14 16
18 20
Sample Output
16
題目大意:
有n個人打算在ai至bi時開一個演講,但只有一個場地,要使演講時間最長,不能分開
解題方法:
先用結束時間排序,再看一看此人演講的結果好,還是不演講好(具體在代碼里面講)
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,f[10005]; struct rec {int x,y; }a[105]; bool rep(rec xx,rec yy) {return ((xx.y<yy.y)||((xx.y==yy.y)&&(xx.x<yy.x)));//按結束時間從小到大排序,如果相同,再按開始時間從小到大排序 } int main() {scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);//輸入sort(a+1,a+1+n,rep);//排序for (int i=1;i<=n;i++)//第i個人for (int j=a[i].y;j<=a[n].y;j++)//只有時間大于a[i].y才能讓這個人講,小于的無法排f[j]=max(f[a[i].x]+a[i].y-a[i].x,f[j]);//前面的是開始前加上這段時間,后面的是原數(shù)printf("%d",f[a[n].y]);//輸出 }總結
以上是生活随笔為你收集整理的【动态规划】大厅安排 (ssl 1212)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: College student refl
- 下一篇: 【动态规划】 数字游戏 (ssl 165