OSDN Git Service

修改完全背包的例题代码
authorZHB <45039623+zhb2000@users.noreply.github.com>
Sat, 9 Jan 2021 16:13:32 +0000 (00:13 +0800)
committerGitHub <noreply@github.com>
Sat, 9 Jan 2021 16:13:32 +0000 (00:13 +0800)
docs/dp/knapsack.md

index afbac20..8511ab9 100644 (file)
@@ -104,16 +104,21 @@ $$
 ??? 例题代码
     ```cpp
     #include <iostream>
-    const int maxn = 1e5 + 10;
-    int n, W, w[maxn], v[maxn], f[maxn];
-    int main() {
-      std::cin >> W >> n;
-      for (int i = 1; i <= n; i++) std::cin >> w[i] >> v[i];
-      for (int i = 1; i <= n; i++)
-        for (int l = w[i]; l <= W; l++)
-          if (f[l - w[i]] + v[i] > f[l]) f[l] = f[l - w[i]] + v[i];
-      std::cout << f[W];
-      return 0;
+    const int maxn = 1e4 + 5;
+    const int maxW = 1e7 + 5;
+    int n, W, w[maxn], v[maxn];
+    long long f[maxW];
+    int main()
+    {
+        std::cin >> W >> n;
+        for (int i = 1; i <= n; i++)
+            std::cin >> w[i] >> v[i];
+        for (int i = 1; i <= n; i++)
+            for (int l = w[i]; l <= W; l++)
+                if (f[l - w[i]] + v[i] > f[l])
+                    f[l] = f[l - w[i]] + v[i];
+        std::cout << f[W];
+        return 0;
     }
     ```