大厅安排

题目

有一个演讲大厅需要GEORGE管理,演讲者们事先定好了需要演讲的起始时间和中止时间。GEORGE想让演讲大厅得到最大可能的使用。我们要接受一些预定而拒绝其他的预定,目标自然是使演讲者使用大厅的时间最长。为方便起见,假设在某一时刻一个演讲结束,另一个演讲就可以立即开始。
  计算演讲大厅最大可能的使用时间。

输入

第一行为一个整数n,n <= 100,表示申请的数目。

输入样例

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

输出

一个整数,表示大厅最大可能的使用时间。

输出样例

16

思路

设f[i]等于第i分钟结束时,所能用的最长时间;a[i][1]表示第i个人的开始时间,a[i][2]表示第i个人的结束时间。
那么,动态转移方程为:
f [ j ] = m a x ( f [ j ] , f [ a [ i ] [ 0 ] ] + a [ i ] [ 1 ] − a [ i ] [ 0 ] ) ; f[j]=max(f[j],f[a[i][0]]+a[i][1]-a[i][0]); f[j]=max(f[j],f[a[i][0]]+a[i][1]a[i][0]);

代码

#include<cstdio>
#include<iostream>
using namespace std;
int n,a[101][2],f[10001];//初始化
int main()
{
	scanf("%d",&n);//输入
	for (int i=1;i<=n;i++)
	scanf("%d%d",&a[i][0],&a[i][1]);//输入
	for (int i=1;i<=n-1;i++)
	for (int j=1+i;j<=n;j++)
	if (a[i][1]>a[j][1]) swap(a[i][0],a[j][0]),swap(a[i][1],a[j][1]);//按结束时间从先到后排序
	else if(a[i][1]==a[j][1]&&a[i][0]>a[j][0]) swap(a[i][0],a[j][0]),swap(a[i][1],a[j][1]);//如果结束时间一样用开始时间排序
	for (int i=1;i<=n;i++)//枚举人数
	for (int j=a[i][1];j<=a[n][1];j++)//枚举重量
	f[j]=max(f[j],f[a[i][0]]+a[i][1]-a[i][0]);//动态转移方程
	printf("%d",f[a[n][1]]);//输出
	return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java教职工办事大厅一个为Java教职工提供办事服务的地方。它是一个集中办公、交流和协作的平台,旨在提高教职工的工作效率和便利性。在Java教职工办事大厅,教职工可以完成各种与工作相关的事务,包括但不限于以下几个方面: 1. 个人信息管理:教职工可以在大厅管理和更新个人信息,包括个人资料、联系方式、教育背景等。 2. 请假申请:教职工可以通过大厅提交请假申请,包括病假、事假、年假等,请假流程更加便捷。 3. 绩效考核:大厅提供了绩效考核的功能,教职工可以在大厅中查看自己的绩效考核情况,并进行自我评价和目标设定。 4. 培训管理大厅提供了培训管理功能,教职工可以查看和报名参加各种培训课程,提升自己的专业能力。 5. 文件管理:教职工可以在大厅中上传和下载各种文件,包括教学资料、研究论文等,方便文件的共享和管理。 6. 通知公告:大厅会发布各种通知和公告,包括会议通知、工作安排等,教职工可以及时了解到最新的信息。 7. 社交交流:大厅提供了社交交流的功能,教职工可以与同事进行在线交流、讨论和分享,促进团队合作和沟通。 以上是Java教职工办事大厅的一些主要功能和特点。通过这个平台,教职工可以更加方便地进行工作和事务处理,提高工作效率和便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值