首页 > 代码库 > 【noi 2.6_7113】Charm Bracelet(DP)

【noi 2.6_7113】Charm Bracelet(DP)

题意:N个饰物,有重量和渴望程度。问在M的重量限制内能达到的最大的渴望度。

解法:经典的01问题,但有一个小技巧值得记住:用if比较大小比调用max函数快了不少,这题有100ms左右。

 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define VV 12900 7 int w[VV],d[VV],f[VV]; 8  9 int main()10 {11     int n,V;12     scanf("%d%d",&n,&V);13     for (int i=1;i<=n;i++)14       scanf("%d%d",&w[i],&d[i]);15     memset(f,0,sizeof(f));16     for (int i=1;i<=n;i++)17      for (int j=V;j>=w[i];j--)18        if (f[j-w[i]]+d[i]>f[j]) f[j]=f[j-w[i]]+d[i];19     printf("%d\n",f[V]);20     return 0;21 }

 

【noi 2.6_7113】Charm Bracelet(DP)