poj 1036 Gangsters

果的dp
#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>

int n, k, t;
int dp[110];
struct P
{
    
int times, value, fat;
}node[
110];

int myabs(int a)
{
    
return a>0?a:-a;
}

int cmp( const void* a, const void* b )
{
    
return (*(P*)a).times-(*(P*)b).times;
}

int main()
{
    
while ( 3 == scanf("%d%d%d"&n, &k, &t) )
    {
        
int i, j, max= 0;
        
for ( i = 1 ; i <= n ; i++ )
            scanf(
"%d"&node[i].times);
        
for ( i = 1 ; i <= n ; i++ )
            scanf(
"%d"&node[i].value);
        
for ( i = 1 ; i <= n ; i++ )
            scanf(
"%d"&node[i].fat);
        qsort(node
+1, n, sizeof(P), cmp);
        node[
0].value= node[0].fat= node[0].times= 0;
        memset(dp, 
-1sizeof(dp));
        dp[
0]= 0;
        
for ( i = 1 ; i <= n ; i++ )
        {
            
for ( j = 0 ; j < i ; j++ )
                
if ( myabs(node[i].times-node[j].times) >= myabs(node[i].fat-node[j].fat) && dp[i] < dp[j] )
                    dp[i]
= dp[j];
            
if ( dp[i] != -1 )
                dp[i]
+=node[i].value;
            
if ( max < dp[i] )
                max
= dp[i];
        }
        printf(
"%d\n", max);
    }
    
return 0;
}

posted on 2011-10-03 20:13 purplest 阅读(113) 评论(0)  编辑 收藏 引用 所属分类: DP


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

导航

统计

常用链接

留言簿

随笔分类(70)

随笔档案(68)

ACMer

搜索

最新随笔

最新评论