zoukankan      html  css  js  c++  java
  • 洛谷P2725 邮票 Stamps

    点击跳转了解题意

    题解:看了第一眼以为搜一下就能过,结果写了个爆搜穷举所有邮票加法的排列,果不其然挂了就47。

    再仔细一看,其实看了标签这很像多重背包枚举件数,果不其然又错了,最后才发现是个完全背包,

    (其实看了题解)状态记下能凑成的数,就是包的大小,最大的包可以用数据范围算出来,然后值记录

    的是能凑出这个值用的邮票数,每次更新的是如果能用更小的邮票数凑出这个数,显然更优。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 
     6 using namespace std;
     7 
     8 int k,n,num,dp[2000005];
     9 
    10 int main()
    11 {
    12     scanf("%d%d",&k,&n);
    13     for(int i=1;i<=2000000;i++)
    14         dp[i]=2333;
    15     dp[0]=0;
    16     for(int i=1;i<=n;i++)
    17     {
    18         scanf("%d",&num);
    19         for(int v=num;v<=2000000;v++)
    20             if(dp[v-num]+1<=k)
    21                dp[v]=min(dp[v],dp[v-num]+1);
    22     }
    23     for(int i=1;i<=2000000;i++)
    24         if(dp[i]==2333)
    25         {
    26             printf("%d",i-1);
    27             return 0;
    28         }
    29     return 0;
    30 } 
  • 相关阅读:
    LaTeX插入数学公式
    清除浮动的4种方式
    水平居中与垂直居中
    如何实现两三栏布局
    BFC
    flex弹性盒子
    盒模型
    Git
    jQuery设置disabled属性与移除disabled属性
    TP---where多条件查询
  • 原文地址:https://www.cnblogs.com/Hoyoak/p/11379043.html
Copyright © 2011-2022 走看看