http://codevs.cn/problem/3012/
比线段覆盖2多一个快排。
写出来,为了体现连续性。
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct MyStruct
{
int a;
int b;
long long value;
}jiegouti[1000005];
bool cmp(const struct MyStruct &aa, const struct MyStruct &bb)
{
return aa.b<bb.b;
}
int main()
{
long long value[1000005] = { 0 };
int n, a, b;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d%d%lld", &a, &b, &jiegouti[i].value);
if (a>b)
{
jiegouti[i].b = a;
jiegouti[i].a = b;
}
else
{
jiegouti[i].b = b;
jiegouti[i].a = a;
}
}
sort(jiegouti, jiegouti + n, cmp);
value[0] = jiegouti[0].value;
long long jieguo = -9999999;
for (int i = 1; i < n; i++)
{
value[i] = jiegouti[i].value;
for (int j = 0; j < i; j++)
{
if (jiegouti[i].a >= jiegouti[j].b&&value[j] + jiegouti[i].value>value[i])
{
value[i] = value[j] + jiegouti[i].value;
}
}
if (value[i]>jieguo)
{
jieguo = value[i];
}
}
cout << jieguo << endl;
return 0;
}