HDU ACM 4502 吉哥系列故事——临时工计划 ->动态规划

分析:dp[i]表示前i天的最大收入。

现排序,然后dp[i]=max(dp[i],dp[a[j].s-1]+a[j].v)(a[j].e<=i)。

#include<iostream>
#include<algorithm>
using namespace std;

#define N 110
int dp[N];         //dp[i]表示第i天的最大收入

struct Node
{
	int s,e,v;
} node[N*10];

bool cmp(const Node& a,const Node& b)
{
	return a.e<b.e;
}

int sovle(int n,int m)
{
	int i,j;

	memset(dp,0,sizeof(dp));
	sort(node,node+n,cmp);
	for(i=1;i<=m;i++)
		for(j=0;j<n;j++)
		{
			if(node[j].e>i)break;
			if(dp[i]<dp[node[j].s-1]+node[j].v) //从s的前一天开始,因为不能重复
				dp[i]=dp[node[j].s-1]+node[j].v;
		}
	return dp[m];
}

int main()
{
	int T,i,n,m;

	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&m,&n);
		for(i=0;i<n;i++)
			scanf("%d%d%d",&node[i].s,&node[i].e,&node[i].v);
		printf("%d\n",sovle(n,m));
	}
    return 0;
}
时间: 2024-12-20 19:22:56

HDU ACM 4502 吉哥系列故事——临时工计划 ->动态规划的相关文章

hdu 4502 吉哥系列故事——临时工计划

吉哥系列故事--临时工计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2921    Accepted Submission(s): 1128 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要

HDU 4502 吉哥系列故事——临时工计划(DP)

Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能把唯一的希望放到自己身上.可是由于时间段的特殊性和自己能力的因素,只能找到些零零碎碎的工作,吉哥想知道怎么安排自己的假期才能获得最多的工资. 已知吉哥一共有m天的假期,每天的编号从1到m,一共有n份可以做的工作,每份工作都知道起始时间s,终止时间e和对应的工资c,每份工作的起始和终止时间以天为单位

HDU 4502吉哥系列故事——临时工计划 和 《尼克的任务》

吉哥系列故事--临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2794 Accepted Submission(s): 1081 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只

hdu 4502吉哥系列故事——临时工计划 (简单DP)

Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能把唯一的希望放到自己身上.可是由于时间段的特殊性和自己能力的因素,只能找到些零零碎碎的工作,吉哥想知道怎么安排自己的假期才能获得最多的工资. 已知吉哥一共有m天的假期,每天的编号从1到m,一共有n份可以做的工作,每份工作都知道起始时间s,终止时间e和对应的工资c,每份工作的起始和终止时间以天为单位

吉哥系列故事——临时工计划(dp)

吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3046 Accepted Submission(s): 1197 Problem Description 俗话说一分钱难倒英雄汉,高中几年下来,吉哥已经深深明白了这个道理,因此,新年开始存储一年的个人资金已经成了习惯,不过自从大学之后他不好意思再向大人要压岁钱了,只能

HDU ACM 4507 吉哥系列故事——恨7不成妻 -&gt;数位DP

题意:如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关-- 1.整数中某一位是7: 2.整数的每一位加起来的和是7的整数倍: 3.这个整数是7的整数倍: 现在问题来了:吉哥想知道在一定区间内和7无关的数字的平方和. 分析:数位DP,关键内容如下. (pre0+i)%7用于处理各个位数之和时候为7的倍数,(pre1*10+i)%7用于处理这个数是否为7的倍数. #include<iostream> using namespace std; const __int64 mod=100

HDU ACM 4513 吉哥系列故事——完美队形II-&gt;求最长回文串(manacher算法)

分析:该題可以通过求最长回文串的方法来解决:求最长回文串使用manacher算法,O(n)时间复杂度. 注意:while(a[i-len[i]]==a[i+len[i]] && a[i-len[i]]<=a[i-len[i]+2])这里多出的判断a[i-len[i]]<=a[i-len[i]+2]即为该題的限制从左到中保证身高不降,因在回文串的计算过程中添加了额外的字符,所以这里是i-len[i]+2而不是i-len[i]+1,以避开添加的字符. #include<ios

HDU ACM 4512 吉哥系列故事——完美队形I -&gt;LCIS最长公共递增子序列

分析:最长公共递增子序列,把数据反向存储一遍,求正反两组数据的LCIS.另外注意边界的条件判断.还有如果取出的新队列有奇数个人或偶数个人要单独判断. #include<iostream> using namespace std; #define max(a,b) ((a)>(b)?(a):(b)) int dp[202]; int a[202]; int b[202]; int LCIS(int n) { int i,j,maxlen,ans; memset(dp,0,sizeof(dp

吉哥系列故事——完美队形I(最长严格递增回文串 +hdu 4512)

吉哥系列故事--完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2652    Accepted Submission(s): 862 Problem Description 吉哥这几天对队形比较感兴趣. 有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这