zoukankan      html  css  js  c++  java
  • 流浪西邮之寻找火石碎片

    题面:

    现在你有v1块钱,v2积分,能免费(免积分)收集k个火石碎片,现在总共有n个火石碎片,每个碎片需要的钱a或者积分b,碎片的能量为val。我们希望收集火石碎片,使能量的总和尽可能大,问你skyer_hxx最多可以拿到能量总和的最大值是多少?

    思路:

    0/1背包

    代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3  
     4 int f[105][105][105][10];
     5 int a[105], b[105], v[105];
     6  
     7 int n,ans, v1, v2, k;
     8 int main()
     9 {
    10     while (~scanf("%d%d%d%d", &n, &v1, &v2, &k))
    11     {
    12         for (int i = 1; i <= n; i++)
    13         {
    14             scanf("%d%d%d", &a[i], &b[i], &v[i]);
    15         }
    16         ans = 0;
    17         memset(f,0,sizeof(f));
    18         for (int i = 1; i <= n; i++)
    19             for (int x = 0; x <= v1; x++)
    20                 for (int y = 0; y <= v2; y++)
    21                     for (int j = 0; j <= k; j++)
    22                     {
    23                         f[i][x][y][j] = f[i - 1][x][y][j];
    24                         if (x >= a[i])
    25        f[i][x][y][j] = max(f[i][x][y][j], f[i - 1][x - a[i]][y][j] + v[i]);
    26                         if (y >= b[i])
    27         f[i][x][y][j] = max(f[i][x][y][j], f[i - 1][x][y - b[i]][j] + v[i]);
    28                         if (j > 0)
    29         f[i][x][y][j] = max(f[i][x][y][j], f[i - 1][x][y][j - 1] + v[i]);
    30                         ans = max(f[i][x][y][j], ans);
    31                     }
    32         printf("%d
    ", ans);
    33     }
    34 }
    View Code
  • 相关阅读:
    SDOI2008Cave 洞穴勘测
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    使用Nginx反向代理和内容替换模块实现网页内容动态替换功能
    Js 变量声明提升和函数声明提升
    Js 变量声明提升和函数声明提升
    Golang-filepath使用
    Golang-filepath使用
    44、File类简介
    44、File类简介
    div/dom元素拖拽缩放插件,纯js实现拖拽缩放,不依赖jQuery~
  • 原文地址:https://www.cnblogs.com/Accpted/p/11185448.html
Copyright © 2011-2022 走看看