会场安排问题
Posted wangxuelin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了会场安排问题相关的知识,希望对你有一定的参考价值。
问题描述:
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点着有不同颜色的最小着色数,相应于要找的最小会场数)。
代码:
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 6 struct node 7 { 8 int data; 9 int flag; 10 }; 11 12 bool cmp(node a,node b) 13 { 14 return a.data<b.data; 15 } 16 17 int f(vector<node> v) 18 { 19 int now=0,max=0; 20 vector<node>::iterator iter=v.begin(); 21 for(;iter<=v.end();iter++) 22 { 23 if(iter->flag==1) 24 { 25 now++; 26 if(now>max) 27 max=now; 28 } 29 else 30 { 31 now--; 32 } 33 } 34 return max; 35 } 36 37 int main() 38 { 39 int n; 40 vector<node> vec; 41 node t; 42 int x; 43 cin>>n; 44 for(int i=1;i<=2*n;i++) 45 { 46 cin>>x; 47 t.data=x; 48 t.flag=i%2; 49 vec.push_back(t); 50 } 51 52 sort(vec.begin(),vec.end(),cmp); 53 int ans=f(vec); 54 cout<<ans<<endl; 55 return 0; 56 }
输入示例:
5
1 23
12 28
25 35
27 80
36 50
输出示例:
3
以上是关于会场安排问题的主要内容,如果未能解决你的问题,请参考以下文章