• 开心的金明:顺推法


    题意

    在不超过N元(可以等于N元)的前提下,使每件物品的价格与重要度的乘积的总和最大。


    分析

    f[i,j]表示前i件物品,总重量不超过j的最优价值

    则 f[i,j]=max{f[i-1,j-w[i]]+P[i]*v[i],f[i-1,j])(1<=i<=m,1<=j<=n,j>=w[i])顺推

    F[m,n]即为最优解


    var
    n,m,i,j:longint;
    w:array[1..30000]of longint;
    p:array[1..25]of longint;
    f:array[0..25,0..30000]of longint;
    begin
        read(n);read(m);
        for i:=1 to m do
        readln(w[i],p[i]);
        fillchar(f,sizeof(f),0);
        for i:=1 to m do
        begin
            for j:=1 to n do
            begin
                f[i,j]:=f[i-1,j];
                if (w[i]<=j)and(f[i,j]<=f[i-1,j-w[i]]+p[i]*w[i]) then f[i,j]:=f[i-1,j-w[i]]+p[i]*w[i];
            end;
        end;
        write(f[m,n]);
    end.

  • 相关阅读:
    CF 986A Fair——多源bfs
    poj3539 Elevator——同余类bfs
    poj3463 Sightseeing——次短路计数
    poj2262 Goldbach's Conjecture——筛素数
    Kruskal算法
    Prim算法
    离散化
    最短路(hdu2544)
    最短路径问题
    Servlet
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500176.html
Copyright © 2020-2023  润新知