贪心算法尺取法解决最小值问题||笨笨的西瓜种植

笨笨的西瓜种植 | Turing


描述

 

笨笨种了一块西瓜地,但这块西瓜地的种植范围是一条直线的,长度为n(0

笨笨在一番研究过后,得出了m(0<=m<=3000)个结论,这m个结论可以使他收获的西瓜最多。

笨笨的结论是这样的:

从西瓜地B处到E处至少要种植T个西瓜,这个范围的收获就可以最大化。笨笨不想那么辛苦,所以他想种植的西瓜尽量

少,而又满足每一个所得的结论。

 

输入

 

第一行两个数,为n和m。

接下来m行表示笨笨的m个结论,每行三个数B,E,T(1<=B<=E<=n,0<=T<=E-B+1)。

 

输出

 

输出笨笨最少需种植多少西瓜。

 

输入样例 1 

9 4
1 4 2
4 6 2
8 9 2
3 5 2

 

输出样例 1

5

Language: 

 

C/C++

 

思想

 

本题采用尺取法,贪心算法,使得每个确定要被使用的西瓜被最大化的利用,满足于题目所给出的多个条件,从而达到最少,最佳值得目的。本题的难度也不算很大,中等,多加思考,代码实现。

 

代码

 

#include
#include
using namespace std;
struct fw{
	int B,E,T;
}a[3005];
bool cmp(fw x,fw y)
{
	if(x.E0)
			for(j=a[i].E;j>=a[i].B&&a[i].T>0;j--)
				if(v[j]==0)
					v[j]=1,a[i].T--;
	}
	for(i=1;i<=n;i++)
		if(v[i]!=0)
			k++;
	printf("%d",k);
}

你可能感兴趣的:(Turing,贪心)