zoukankan      html  css  js  c++  java
  • 洛谷 P5662 纪念品

    题目传送门

    解题思路:

    一道DP,完全背包,不过有点不同于模板.因为本题的每件物品可自由在不同的时间买卖,且不同时间价格不同.

    这道题的关键在于要明白一个非常傻逼的性质,就是我在某天买了第i个物品,然后又把它卖出去,其实我啥也没干.

    所以,我想将一个物品在第i天买,在第i+n天卖出去,其实可以转化为在第i天买,第i+1,i+2......i+n-1天都当天卖出去然后当天再买回来,第i+n天卖出去.

    最后,套完全背包即可.

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 
     5 using namespace std;
     6 
     7 long long t,n,m,a[2001][2001],f[20001],ans;
     8 
     9 int main() {
    10     scanf("%lld%lld%lld",&t,&n,&m);
    11     for(int i = 1;i <= t; i++)
    12         for(int j = 1;j <= n; j++)
    13             scanf("%lld",&a[i][j]);
    14     for(int i = 1;i <= t; i++){
    15         memset(f,0,sizeof(f));
    16         for(int j = 1;j <= n; j++)
    17             for(int x = a[i][j];x <= m; x++)
    18                 f[x] = max(f[x],f[x-a[i][j]] + a[i+1][j] - a[i][j]);
    19         m = max(m,f[m] + m);
    20     }
    21     printf("%lld",m);
    22     return 0;
    23 }

    //CSP-J 2019 T3

  • 相关阅读:
    对象流(序列化,反序列化)
    随机存取文件流(双性流)
    网络编程
    ByteArrayOutputStream小测试
    Java基础
    IO流实现GBK写入文件然后转换UTF-8
    IO流实现简单的文件的剪切
    递归
    ZKDQ--问题整理
    postman测试上传文件接口
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/11920984.html
Copyright © 2011-2022 走看看