项目安排

项目安排

时间限制:3000 ms  |  内存限制:65535 KB

难度:4

描述
小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠)。

输入
输入可能包含多个测试样例。

对于每个测试案例,输入的第一行是一个整数n(1<=n<=5000):代表小明手中的项目个数。

接下来共有n行,每行有3个整数st、ed、val,分别表示项目的开始、截至时间和项目的报酬,相邻两数之间用空格隔开。

st、ed、value取值均在32位有符号整数(int)的范围内,输入数据保证所有数据的value总和也在int范围内。

输出
对应每个测试案例,输出小明可以获得的最大报酬。
样例输入
3
1 3 6
4 8 9
2 5 16
4
1 14 10
5 20 15
15 20 8
18 22 12
样例输出
16
22

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define max(a,b) a>b ? a:b
int dp[5010];
struct node
{
	int begin;
	int end;
	int price;
}s[5010];
int com(const void *a,const void *b)
{
	if((*(node *)a).end!=((*(node *)b).end))
       return ((*(node *)a).end)-((*(node *)b).end);
    else  if((*(node *)a).begin-((*(node *)b).begin))
        return (*(node *)a).begin-((*(node *)b).begin);
    else
	return    (*(node *)a).price-((*(node *)b).price);
}
int main(void)
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{
		getchar();
		int i,j;
		memset(dp,0,sizeof(dp));
		memset(s,0,sizeof(s));
		for(i=1;i<=n;i++)
		{
			scanf("%d%d%d",&s[i].begin,&s[i].end,&s[i].price);
		}
		qsort(s,n+1,sizeof(s[0]),com);
		for(i=1;i<=n;i++)
		{
			for(j=i-1;j>=1;j--)
			{
				if(s[i].begin>=s[j].end)
				    break;
			}
			dp[i]=max(dp[i-1],dp[j]+s[i].price);
		}
		printf("%d\n",dp[n]);
	}
	return 0;
}        

时间: 2024-08-07 03:26:48

项目安排的相关文章

题目1434:今年暑假不AC (项目安排类:结束时间快排,判断开始时间)

题目描述: “今年暑假不AC?”“是的.”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%...”确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事).非常6+7.超级女生,以及王小丫的<开心辞典>等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目) 输入:     

九度oj 题目1499:项目安排

题目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠). 输

项目安排(动态规划)

项目描述: 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的.由于小明马上就要硕士毕业了,面临着买房.买车.给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包.万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠). 输

项目整体管理与范 围 管理

第六章项目整体管理 1.项目整体管理的7个过程: 1)      项目启动,制定项目章程. 2)      制定初步的项目范围说明书. 3)      制定项目管理计划. 4)      指导和管理项目的执行. 5)      监督和控制项目. 6)      整体变更控制. 7)      项目收尾. 2.项目章程应当包括11项内容(记忆7条以上) 1)      基于项目干系人的需求和期望提出的要求. 2)      项目必需满足的业务要求或产品需求. 3)      项目的目的或项目立项的

软考中高项学员:2016年3月16日作业 项目整体管理及范围管理

第六章项目整体管理 1 项日整体管管理的过程包括如下内容. 项目启动.制定项目章程. 制定初步的项目范围说明书. 制定项日管理计划. 指导和管理项目的执行. 监督和控制项目. 整体变更控制. 项目收尾. 2   项目立项以后,就要正式启动项目.所谓的项目启动就是以书面的.正式的形式肯定项目的成立与存在,同时以书面正式的形式为项目经理进行授权. 3 项目章程是正式批准一个项目的文档,或者是批准现行项目是否进入下一阶段的文档,项目章程应当由项目组织以外的项目发起人发布,若项目为本组织开发,也可以由投

项目经理的磨练

2011年工作之余把自己的一些心得体会以及书上所学,整理成了<程序员是这样炼成的>系列,如今已经两年过去,自己已经渐渐远离编程的日子,有幸走上了项目管理的道路,期间组织和管理过好几个大型项目,个中滋味也均有体会.希望可以用自己的文字,记录自己在项目管理上的点点滴滴和lesson learn,供大家和自己分析和参考. 我们项目管理中谈到最多的时间,成本,质量.而最直接的,最能直观的自然是时间问题.常听人说:“做项目就还没有不delay(推迟)的”,“计划跟不上变化”.在开篇迫不及待的就想跟大家一

外包项目的内外部管理

今天下午又开了一次项目例会,对于已经延期了一个多月的模块外包厂商竟然还提需要给他们什么材料再回去研究研究,实在忍无可忍.感叹作为甲方来说,对于外包出去的项目来说如果遇到了九流的厂商,然后再加上没有什么实质效果的管理办法,真是哑巴吃黄连->有苦说不出. 事情还得从一年前说起,一年前公司老板看到分布在全国各地的人力管理工作效率特别低,做个工资.绩效什么的特别慢,想因此要求IT部门为人力部门提供eHR方面的系统,来提高工作效率.在通过前期调研.自制采购分析.招投标下来就选定了其中一家.为了让项目后续的

PMP备考_第六章_项目时间管理

项目时间管理 前言 项目时间管理是项目管理中最难的一个环节,与个人时间管理类似,团体的效率如果管理不当,是低于个人效率的,为了管理好时间,从预估,执行到反馈均需要严格的分析和处理.如果制定的计划是无法执行,完全无法作为依据的计划,那么项目执行会进行死亡行军状态,注定是一个失败的项目. 整个项目的时间管理部分同样占据了两个过程组,一个是规划过程组,一个是监控过程组. 时间管理部分包括以下几个部分 规划时间进度管理   制定进度管理计划 定义活动                  识别完成项目所必须

信息系统项目3月16日作业

3月16日作业: 一,本章课程重点: 项目整体管理的过程包括如下内容: 项目启动 制定初步的范围说明书 制定项目管理计划 指导和管理项目的执行 监督和控制项目 整体变更控制 项目收尾 启动前加入背景介绍 收尾后加入经验教训就是论文论项目整体管理大纲 项目启动:项目立项以后就要正式启动项目,启动是以书面的.正式的形式肯定项目的成立于存在,同时以书面正式的形式为项目经理进行授权 项目正常的作用和内容 项目章程是正式批准一个项目的文档,或者是批准现行现行项目是否进入下一阶段的文档.项目章程应当由项目组