糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

POJ 3257 Cow Roller Coaster 背包^2

思路:

这题数据很水,所以二维背包都能过的。

#include <stdio.h>
#include 
<stdlib.h>

#define MAX_N 10032
#define MAX_B 1024
#define MAX_L 1024

struct node {
    
int x, w, f, c;
}
;

struct node in[MAX_N];
int dp[MAX_L][MAX_B], right[MAX_L];
int L, N, B;

int cmp(const void *a, const void *b)
{
    
return ((struct node *)a)->- ((struct node *)b)->x;
}


inline 
void update_max(int *a, int b)
{
    
if (b > *a)
        
*= b;
}


int main()
{
    
int i, c;
    
struct node *t;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d%d"&L, &N, &B);
    
for (i = 0; i < N; i++
        scanf(
"%d%d%d%d"&in[i].x, &in[i].w, &in[i].f, &in[i].c);
    qsort(
in, N, sizeof(in[0]), cmp);
    
    right[
0= 1;
    dp[
0][0= 1;
    
for (i = 0; i < N; i++{
        t 
= &in[i];
        
for (c = 0; c < right[t->x] && c + t-><= B; c++{
            
if (!dp[t->x][c])
                
continue;
            update_max(
&dp[t->+ t->w][c + t->c], dp[t->x][c] + t->f);
            update_max(
&right[t->+ t->w], c + t->+ 1);
        }

    }


    
for (i = c = 0; c <= B; c++)
        update_max(
&i, dp[L][c]);
    printf(
"%d\n", i - 1);

    
return 0;
}

posted on 2010-04-21 21:43 糯米 阅读(294) 评论(0)  编辑 收藏 引用 所属分类: POJ


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