活动安排

xiaoxiao2021-02-28  23

题目大意:

我们要在足够多的会场里举行各种活动,一个会场在同一时刻只能安排一个活动,希望使用尽可能少的会场总数。假设一个活动结束后,立即可以在这个会场中进行下一个活动,即如果活动i使用了第3个会场,结束时间是fi,那么如果另有一个活动j的开始时间是sj,sj=fi,那么你可以将活动j也放在这个3号会场进行。

解题思路:

纯模拟 一道大水

#include <cstdio> #include <algorithm> using namespace std; int n,ans; struct node{ int s,f; }a[101]; bool cmp(node x,node y) { return x.s<y.s; } int main() { //freopen("meet.in","r",stdin); //freopen("meet.out","w",stdout); scanf("%d",&n); ans=n;//我的方法是直接找不可以的,找到就-1 for (int i=1;i<=n;i++) scanf("%d%d",&a[i].s,&a[i].f); sort(a+1,a+n+1,cmp);//先一次排序 for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (i!=j) if (a[j].s>=a[i].f&&a[i].f!=-1&&a[i].s!=-1&&a[j].f!=-1&&a[j].s!=-1) ans--,a[i].f=a[j].f,a[j].s=-1,a[j].f=-1;//然后比较,替换,总和-1 printf("%d",ans); return 0; }
转载请注明原文地址: https://www.6miu.com/read-2350195.html

最新回复(0)