zoukankan      html  css  js  c++  java
  • 【HDOJ】2602 Bone Collector

    DP。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stdlib.h>
     4 
     5 typedef struct {
     6     int val, vol;
     7 } bone_st;
     8 
     9 bone_st bones[1005];
    10 int dp[1005];
    11 
    12 int comp(const void *a, const void *b) {
    13     bone_st *p = (bone_st *)a;
    14     bone_st *q = (bone_st *)b;
    15     if (p->vol == q->vol)
    16         return q->val - p->val;
    17     else
    18         return p->vol - q->vol;
    19 }
    20 
    21 int main() {
    22     int case_n, n, v;
    23     int i, j, k;
    24 
    25     scanf("%d", &case_n);
    26 
    27     while (case_n--) {
    28         scanf("%d %d", &n, &v);
    29         for (i=0; i<n; ++i)
    30             scanf("%d", &bones[i].val);
    31         for (i=0; i<n; ++i)
    32             scanf("%d", &bones[i].vol);
    33 
    34         qsort(bones, n, sizeof(bone_st), comp);
    35         memset(dp, 0, sizeof(dp));
    36 
    37         for (i=0; i<n; ++i) {
    38             if (bones[i].vol > v)
    39                 break;
    40             k = bones[i].val;
    41             for (j=v; j>=bones[i].vol; --j) {
    42                 if (k+dp[j-bones[i].vol] > dp[j])
    43                     dp[j] = k + dp[j-bones[i].vol];
    44             }
    45         }
    46         printf("%d
    ", dp[v]);
    47     }
    48 
    49     return 0;
    50 }
  • 相关阅读:
    事务与锁的一些总结
    NYOJ 73
    NYOJ 456
    Sleep函数
    NYOJ 488(素数环)
    NYOJ 308
    NYOJ 27
    NYOJ 325
    NYOJ 138
    求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
  • 原文地址:https://www.cnblogs.com/bombe1013/p/3706845.html
Copyright © 2011-2022 走看看