【题目描述】
现在哈利面前有两个坩埚,有许多种药材要放进坩埚里,但一个坩埚加工时只能加工一种药材,而且不一定每一种药材都要加进坩埚里。加工每种药材都必须在某个起始时间和结束时间之内完成(包括起始时间和结束时间),每种药材都有一个加工后的药效,询问哈利可以得到的最大药效是多少。
【输入描述】
第1行输入两个整数,分别表示一节魔药课的时间t(1 ≤ t ≤ 500)和药材数n(1 ≤ n ≤ 100);
接下来n行,每行输入三个整数,分别表示加工第i种药材的起始时间t1、结束时间t2(1 ≤ t1 ≤ t2 ≤ t)和药效w(1 ≤ w ≤ 100)。
【输出描述】
输出一个正整数,表示最大药效。
【样例输入】
7 4
1 2 10
4 7 20
1 3 2
3 7 3
【样例输出】
35
源代码:#include#include using namespace std;struct Node{ int L,R,S;}i[501];int n,Time,ans,f[101][501][501];bool Rule(Node t1,Node t2){ if (t1.L==t2.L) return t1.R i[b].R) //不冲突,可以更新。 f[a][a][c]=max(f[a][a][c],f[a-1][b][c]+i[a].S); if (i[a].L>i[c].R) //同理。 f[a][b][a]=max(f[a][b][a],f[a-1][b][c]+i[a].S); ans=max(ans,max(f[a][b][a],f[a][a][c])); //顺便更新答案。 } printf("%d",ans); return 0;}