zoukankan      html  css  js  c++  java
  • UVA 10130 SuperSale

    经典的0、1背包(话说现在还不知道什么是0、1背包),还用上了滚动数组。当初最先接触背包问题时,纠结到死,现在做起来流畅多了,只能说人是会进步的啊!

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define MAXN 1005
     4 int p[MAXN],w[MAXN],f[32];
     5 int main()
     6 {
     7     int T,N,G,i,j,t,ans;
     8     scanf("%d",&T);
     9     while(T--)
    10     {
    11         scanf("%d",&N);
    12         for(i = 0; i < N; i++)
    13             scanf("%d%d",&p[i],&w[i]);
    14         memset(f,0,sizeof(f));
    15         for(i = 0; i < N; i++)
    16             for(j = 30; j >= 1; j--)
    17                 if(j >= w[i] && f[j - w[i]] + p[i] > f[j])
    18                     f[j] = f[j - w[i]] + p[i];
    19         scanf("%d",&G);
    20         ans = 0;
    21         while(G--)
    22         {
    23             scanf("%d",&t);
    24             ans += f[t];
    25         }
    26         printf("%d\n",ans);
    27     }
    28     return 0;
    29 }

    做这题时还遇上了一个问题,程序运行时间和数据类型有关,这题我用 long long 就会超时,用 int 就不会,求大牛解释。

  • 相关阅读:
    第二阶段Sprint2
    第二阶段Sprint1
    Sprint10
    Sprint9
    Sprint8
    Sprint7
    第二阶段个人工作总结(2)
    第二阶段个人工作总结(1)
    查找三个“水王”
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/2459548.html
Copyright © 2011-2022 走看看