线段覆盖2(动态规划)

http://wikioi.com/problem/3027/

#include
#include
#include
#include
#include
#include
#include

using namespace std;
#define maxn 1005 
int dp[ maxn ] ;
struct node
{
	int left , right , value ;
}edge[ maxn ] ;

int cmp( const node a , const node b )
{
	return a.right < b.right ;
}

int main()
{
	int n ;
	scanf( "%d" , &n ) ;
	{
		for( int i = 0 ; i < n ; ++i )
		{
			scanf( "%d%d%d" , &edge[ i ].left , &edge[ i ].right , &edge[ i ].value ) ;
		}
		sort( edge , edge + n , cmp ) ;
		for( int i = 1 ; i < n; ++i )
		{
			int k = 0 ;
			for( int j = 0 ; j <= i - 1 ; ++j )
			{
				if( edge[ j ].right <= edge[ i ].left )
					if( edge[ j ].value > k )
					{
						k = edge[ j ].value ;
					}
			}
			edge[ i ].value = edge[ i ].value + k ;
		}
		int Max = 0 ;
		for( int i = 0 ; i < n ; ++i )
		{
			if( edge[ i ].value > Max )
				Max = edge[ i ].value ;
		}
		cout << Max << endl ;
	}
	return 0 ;
}


你可能感兴趣的:(Wiki,Oi,Dp)