• 完美世界笔试(动态规划,背包问题)


    小艺每天都在吃和睡中浑浑噩噩的度过。
     然而肚子是有容量上限V的。
     假设,小艺有n种零食,每种零食的甜蜜值为b,占据小肚子空间ai.
    小艺想知道在自己肚子空间上限允许范围内能获得的最大甜蜜值是多少。

     输入描述:
     第一行输入整数v和n,分别代表肚子容量上限,和零食种类数(1<=v,n<=1000)
    以下n行每行包含两个整数,代表每种零食占据肚子空间a和甜蜜值b.(1<=a,b<=1000)
     输出描述:
     最大甜蜜值


    70 3
    71 100
    69 1
    1 2

    输出:140

    代码:

     1 import java.util.Scanner;
     2 
     3 public class Wanmeishijie01 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         // 小艺每天都在吃和睡中浑浑噩噩的度过。
     8         //
     9         // 然而肚子是有容量上限V的。
    10         //
    11         // 假设,小艺有n种零食,每种零食的甜蜜值为b,占据小肚子空间ai.
    12         //
    13         // 小艺想知道在自己肚子空间上限允许范围内能获得的最大甜蜜值是多少。
    14         //
    15         // 输入描述:
    16         //
    17         // 第一行输入整数v和n,分别代表肚子容量上限,和零食种类数(1<=v,n<=1000)
    18         // 以下n行每行包含两个整数,代表每种零食占据肚子空间a和甜蜜值b.(1<=a,b<=1000)
    19         //
    20         // 输出描述:
    21         //
    22         // 最大甜蜜值
    23 //         70 3
    24 //         71 100
    25 //         69 1
    26 //         1 2
    27 
    28         Scanner sc = new Scanner(System.in);
    29         String line0 = sc.nextLine();
    30         String[] sline = line0.split(" ");
    31         // for(String k:sline)
    32         int v = Integer.parseInt(sline[0]);
    33         int n = Integer.parseInt(sline[1]);
    34         int[] varr = new int[n];
    35         int[] tarr = new int[n];
    36         for (int i = 0; i < n; i++) {
    37             String line1 = sc.nextLine();
    38             String[] sl = line1.split(" ");
    39             varr[i] = Integer.parseInt(sl[0]);
    40             tarr[i] = Integer.parseInt(sl[1]);
    41         }
    42 //    for(int k:varr)
    43 //        System.out.println(k);
    44         System.out.println(tianMi(varr,tarr,v,n));
    45     }
    46     public static int tianMi(int[] varr,int[] tarr,int v,int n) {
    47         int maxm=1000;
    48         int k=0;
    49         int tianmi=0;
    50         int[] f=new int[maxm];
    51 //        int[] c=new int[maxm];
    52 //        int[] w=new int[maxm];
    53         for(int i=0;i<n;i++) {
    54             for(k=varr[i];k<=v;k++)
    55                 f[k]=Math.max(f[k-varr[i]]+tarr[i],f[k]);
    56         }
    57         tianmi=f[v];
    58         return tianmi;
    59     }
    60 
    61 }
  • 相关阅读:
    hdu 5877 (dfs+树状数组) Weak Pair
    hdu 5876 (补图BFS) Sparse Graph
    bzoj 1051 (强连通) 受欢迎的牛
    UVA 10054 (欧拉回路) The Necklace
    HYSBZ 2743 (树状数组) 采花
    Codeforces 702C Cellular Network
    ZAB协议(Zookeeper atomic Broadcast)
    分布式一致性协议-2PC与3PC(二)
    分布式架构(一)
    redis集群
  • 原文地址:https://www.cnblogs.com/ncznx/p/9693015.html
Copyright © 2020-2023  润新知