活动选择(C++)

活动选择
难度级别:C; 运行时间限制:500ms; 运行空间限制:51200KB; 代码长度限制:2000000B

试题描述

学校最近几天有n个活动,这些活动都需要使用学校大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而是用教室。

现在给出n个活动使用礼堂的起始时间begini和结束时间endi,请你帮助办公室人员安排一些活动来使用礼堂,使得安排的活动尽量多。


输入

第一行一个整数n。
接下来n行,每行2个整数,第一个begini,第二个endi。

输出

最多能安排的活动个数。

输入示例

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

输出示例

4

其他说明

1<=n<=1000,begini<=endi<=32767
SCX编写

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
struct ss
{
int x,y;
}p[1010];
bool cmp(ss a,ss b)
{
if(a.y!=b.y) return a.y<b.y;
else if(a.x!=b.x) return a.x<b.x;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
for(i=0;i<n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
sort(p,p+n,cmp);
int a=p[0].y,cnt=1;
for(i=1;i<n;i++)
if(a<=p[i].x)
{
cnt++;
a=p[i].y;
}
printf("%d\n",cnt);
}
return 0;
}

时间: 2024-10-25 02:58:48

活动选择(C++)的相关文章

活动选择的贪心算法与动态规划(未完成)

// greedy_algorithm.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<queue> using namespace std; #define NofActivity 11 int c[NofActivity + 1][NofActivity + 1]; int reme[NofActivity + 1][NofActivity + 1]; //活动的

CODEVS 2610活动选择

2610 活动选择 题目描述 Description 假设有一个需要使用某一资源的n(n≤1000)个活动组成的集合S,S={1,-,n}.该资源一次只能被一个活动占有,每一个活动有一个开始时间bi和结束时间ei(bi≤ei).若bi>ej或者bj>ei,则活动i和活动j兼容. 你的任务是是:选择由互相兼容的活动组成的最大集合. 输入描述 Input Description 共n+1行,其中第1行为n,第2行到第n+1行表示n个活动的开始时间和结束时间(中间用一个空格隔开),格式为: n b1

贪心算法—活动选择问题

4.1 活动选择问题 1.问题的理解与描述 假定有n个需要使用同一个这样的资源的活动,每次只能有一个活动使用该资源.每一个活动有一个开始时间 si,一个完成时间 fi,其中0 ≤ si < fi < ∞.如果区间[si , fi)和[sj , fj)不相交,活动ai和aj是相容的(即如果si≥ fj 或 sj ≤ fi,ai和aj相容).活动选择问题是选取一个由相容活动构成的最大集合. 输入:按完成时间排好序的活动开始时间数组s,完成时间数组 f. 输出:表示一个最大的相容活动组的向量{x1,

【算法导论】用动态规划解活动选择问题

上一篇讲了贪心算法来解活动选择问题([算法导论]贪心算法之活动选择问题),发现后面有一道练习16.1-1是要用动态规划来解活动选择问题.其实跟之前的矩阵链乘法有些相似,也是考虑分割的活动是哪一个,并用二维数据来记录Sij---最大兼容集合个数,和用另一个二维数据来记录Sij取得最大时的活动分割点k.然后就是考虑边界问题,和使用递归来求动态规划的最优解. 代码注解比较详尽: #include <iostream> #include <algorithm> using namespac

活动选择问题--贪心

活动选择 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 学校的大学生艺术中心周日将面向全校各个学院的学生社团开放,但活动中心同时只能供一个社团活动使用,并且每一个社团活动开始后都不能中断.现在各个社团都提交了他们使用该中心的活动计划(即活动的开始时刻和截止时刻).请设计一个算法来找到一个最佳的分配序列,以能够在大学生艺术中心安排不冲突的尽可能多的社团活动. 比如有5个活动,开始与截止时刻分别为: 最佳安排序列为:1,4,5.

活动选择

活动选择 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 38   Accepted Submission(s) : 20 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 假设有一个需要使用某一资源的n个活动组成的集合S,S={1,--

活动选择问题 (动态规划 与 贪心算法)

问题描述: 设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源.每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi.如果选择了活动i,则它在半开时间区间[si, fi)内占用资源.若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的.也就是说,当si≥fj或sj≥fi时,活动i与活动j相容.活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合. . 从图中

【算法导论】贪心算法之活动选择问题

动态规划总是在追求全局最优的解,但是有时候,这样有点费时.贪心算法,在求解过程中,并不追求全局最优解,而是追求每一步的最优,所以贪心算法也不保证一定能够获得全局最优解,但是贪心算法在很多问题却额可以求得最优解. 一.问题概述 活动选择问题: 假定一个有n个活动(activity)的集合S={a1,a2,....,an},这些活动使用同一个资源(例如同一个阶梯教室),而这个资源在某个时刻只能供一个活动使用.每个活动ai都有一个开始时间si和一个结束时间fi,其中0<=si<fi<正无穷.如

贪心法——活动选择问题和背包问题

今天上午听了米老师讲的算法,感觉收获很多,对于算法更加有信心了.首先,先来宏观看一下: 这三种算法总的来说,刚开始看的时候不知道怎么下手,但是看多了也会有那么一点儿感觉.分治法是这三种算法里面都有的思想,动态规划和贪心都是将问题分解成子问题求解,但动态规划里面的子问题都带有联系,而贪心算法里面的子问题都相对独立,唯一不同的是,贪心算法要首先想出一个解决方案来构造求解最优解的过程. 宏观介绍下算法后,来看看贪心算法的两个实例. 一,活动选择问题 解决方案: 对于活动的选择问题,我们求解过程是这样的