{"id":4,"date":"2023-01-10T11:42:00","date_gmt":"2023-01-10T03:42:00","guid":{"rendered":"https:\/\/solost.cn\/?p=4"},"modified":"2023-01-10T19:50:15","modified_gmt":"2023-01-10T11:50:15","slug":"start","status":"publish","type":"post","link":"https:\/\/solost.cn\/?p=4","title":{"rendered":"\u52a8\u6001\u89c4\u5212"},"content":{"rendered":"<h1>\u52a8\u6001\u89c4\u5212<\/h1>\n<h2>\u80cc\u5305\u95ee\u9898<\/h2>\n<h3>01\u80cc\u5305<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/amarantos475.oss-cn-hangzhou.aliyuncs.com\/img\/image-20220720134405717-16582958467481.png\" alt=\"image-20220720134405717\" title=\"image-20220720134405717\"><\/p>\n<p>\u6bcf\u4e2a\u7269\u54c1\u6700\u591a\u7528\u4e00\u6b21<\/p>\n<p>\u6709 N \u4ef6\u7269\u54c1\u548c\u4e00\u4e2a\u5bb9\u91cf\u662f V \u7684\u80cc\u5305\u3002\u6bcf\u4ef6\u7269\u54c1\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\u3002<\/p>\n<p>\u7b2c i \u4ef6\u7269\u54c1\u7684\u4f53\u79ef\u662f v~i~\uff0c\u4ef7\u503c\u662fw~i~\u3002<\/p>\n<p>\u6c42\u89e3\u5c06\u54ea\u4e9b\u7269\u54c1\u88c5\u5165\u80cc\u5305\uff0c\u53ef\u4f7f\u8fd9\u4e9b\u7269\u54c1\u7684\u603b\u4f53\u79ef\u4e0d\u8d85\u8fc7\u80cc\u5305\u5bb9\u91cf\uff0c\u4e14\u603b\u4ef7\u503c\u6700\u5927\u3002<br \/>\u8f93\u51fa\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u8f93\u5165\u683c\u5f0f<\/h4>\n<p>\u7b2c\u4e00\u884c\u4e24\u4e2a\u6574\u6570\uff0cN\uff0cV\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7269\u54c1\u6570\u91cf\u548c\u80cc\u5305\u5bb9\u79ef\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u6709 N \u884c\uff0c\u6bcf\u884c\u4e24\u4e2a\u6574\u6570 v~i~\uff0cw~i~\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7b2c i \u4ef6\u7269\u54c1\u7684\u4f53\u79ef\u548c\u4ef7\u503c\u3002<\/p>\n<h4>\u8f93\u51fa\u683c\u5f0f<\/h4>\n<p>\u8f93\u51fa\u4e00\u4e2a\u6574\u6570\uff0c\u8868\u793a\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u6570\u636e\u8303\u56f4<\/h4>\n<p>0&lt;N,V\u22641000<br \/>0&lt;v~i~\uff0cw~i~\u22641000<\/p>\n<h4>\u8f93\u5165\u6837\u4f8b<\/h4>\n<pre><code>4 5\n1 2\n2 4\n3 4\n4 5<\/code><\/pre>\n<h4>\u8f93\u51fa\u6837\u4f8b\uff1a<\/h4>\n<pre><code>8<\/code><\/pre>\n<p>\u4e8c\u7ef4\u8868\u793a<\/p>\n<pre><code class=\"c++\">#include &lt;bits\/stdc++.h&gt;\n\nusing namespace std;\nconst int N = 1e3 + 10;\nint n, m;\nint v[N], w[N];\nint f[N][N];\nint main(){\n    cin &gt;&gt; n &gt;&gt; m;\n    for(int i = 1; i &lt;= n; i ++) cin &gt;&gt; v[i] &gt;&gt; w[i];\n  \n    for(int i = 1; i &lt;= n; i ++)\n        for(int j = 0; j &lt;= m; j ++){\n            f[i][j] = f[i - 1][j];\n            if(j &gt;= v[i]) f[i][j] = max(f[i][j], f[i - 1][j - v[i]] + w[i]);\n        }\n  \n    cout &lt;&lt; f[n][m];\n    return 0;\n}<\/code><\/pre>\n<p>\u4f18\u5316\u4e3a\u4e00\u7ef4\u8868\u793a<\/p>\n<pre><code class=\"C++\">#include &lt;bits\/stdc++.h&gt;\n\nusing namespace std;\nconst int N = 1e3 + 10;\nint n, m;\nint v[N], w[N];\nint f[N][N];\nint main(){\n    cin &gt;&gt; n &gt;&gt; m;\n    for(int i = 1; i &lt;= n; i ++) cin &gt;&gt; v[i] &gt;&gt; w[i];\n  \n    for(int i = 1; i &lt;= n; i ++)\/\/\u7b2c\u4e00\u5c42\u5faa\u73af\u4e3b\u8981\u7528\u6765\u8868\u793a\u65b9\u6848\u6570\n        for(int j = 0; j &lt;= m; j ++){\/\/\u4f18\u5316\u524d\n        for(int j = v[i]; j &lt;= m; j ++)\/\/\u56e0\u4e3a\u6211\u4eec\u4e0b\u9762\u5224\u5b9a\u4e3aj &gt;= vi\u6240\u4ee5\u53ef\u4ee5\u7701\u75650~vi\n        for(int j = m; j &gt;= v[i]; j --)\/\/\u6211\u4eec\u5728\u5224\u65admax\u7684\u65f6\u5019\u9700\u8981\u5224\u65ad\u524d\u4e00\u5c42\u7684\u6761\u4ef6f[i-1]\uff0c\u6240\u4ee5\u6211\u4eec\u8f6c\u6362\u4e3a\u4e00\u7ef4\u7684\u65f6\u5019\u53ef\u4ee5\u5c06\u7b2c\u4e8c\u5c42\u5faa\u73af\u5012\u8fc7\u6765\u4ee5\u8fbe\u5230\u964d\u4f4e\u7ef4\u5ea6\u7684\u76ee\u7684\n            f[i][j] = f[i - 1][j];\/\/\u4f18\u5316\u524d\n            f[j] = f[j] \/\/\u7b49\u4ef7\uff0c\u5220\u9664\u5373\u53ef\n            if(j &gt;= v[i]) f[i][j] = max(f[i][j], f[i - 1][j - v[i]] + w[i]);\n        }\n  \n    \/\/\u6700\u7ec8\u4f18\u5316\u540e\n    for(int i = 1; i &lt;= n; i ++){\n        for(int j = m; j &gt;= v[i]; j -- ){\n            f[j] = max(f[j], f[j - v[i]] + w[i]);\n        }\n    }\n  \n    cout &lt;&lt; f[n][m];\n    return 0;\n}<\/code><\/pre>\n<p>\u6700\u7ec8\u7248<\/p>\n<pre><code class=\"C++\">#include &lt;bits\/stdc++.h&gt;\n\nusing namespace std;\nconst int N = 1010;\nint v[N], w[N], f[N];\nint n, m;\nint main(){\n    cin &gt;&gt; n &gt;&gt; m;\n    for(int i = 1; i &lt;= n; i ++ ) cin &gt;&gt; v[i] &gt;&gt; w[i];\n    for(int i = 1; i &lt;= n; i ++)\n        for(int j = m; j &gt;= v[i]; j --){\n            f[j] = max(f[j], f[j - v[i]] + w[i]);\n        }\n  \n    cout &lt;&lt; f[m];\n    return 0;\n}<\/code><\/pre>\n<h3>\u5b8c\u5168\u80cc\u5305<\/h3>\n<p>\u6bcf\u4ef6\u7269\u54c1\u6709\u65e0\u9650\u4e2a<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/amarantos475.oss-cn-hangzhou.aliyuncs.com\/img\/image-20220720135502246-16582965040152.png\" alt=\"image-20220720135502246\" title=\"image-20220720135502246\"><\/p>\n<p>\u6700\u7ec8\u7684\u72b6\u6001\u8f6c\u79fb\u65b9\u7a0b\u4e3a f[i, j] = f[i - 1, j - k <em> v[i]] + k <\/em> w[i];<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/amarantos475.oss-cn-hangzhou.aliyuncs.com\/img\/image-20220720145958200.png\" alt=\"image-20220720145958200\" title=\"image-20220720145958200\"><\/p>\n<p>\u5bf9\u6bd4\uff1a 01\u80cc\u5305\u95ee\u9898\u72b6\u6001\u8f6c\u79fb\u65b9\u7a0b\u4e3af[i, j] = max(f[i-1, j], f[i-1, j - v] + w);<\/p>\n<pre><code>\u5b8c\u5168\u80cc\u5305\u95ee\u9898\u72b6\u6001\u8f6c\u79fb\u65b9\u7a0b f[i, j] = max(f[i - 1, j], f[i, j - v] + w);<\/code><\/pre>\n<pre><code class=\"C++\">#include &lt;bits\/stdc++.h&gt;\n\nusing namespace std;\nconst int N = 1010;\nint f[N][N];\nint v[N], w[N];\nint main(){\n    int n, m;\n    cin &gt;&gt; n &gt;&gt; m;\n    for(int i = 1; i &lt;= n; i ++) cin &gt;&gt; v[i] &gt;&gt; w[i];\n    for(int i = 1; i &lt;= n; i ++)\n        for(int j = 0; j &lt;= m; j ++)\n            for(int k = 0; k * v[i] &lt;= j; k ++){\n                f[i][j] = max(f[i][j], f[i - 1][j - k * v[i]] + k * w[i]);\n            }\n              \/\/\u6211\u4eec\u53ef\u4ee5\u53d1\u73b0\u89c4\u5f8b\u7531\u4e0a\u56fe\u53ef\u77e5\uff0c\u53ef\u4ee5\u5c06\u65b9\u7a0b\u4f18\u5316\u4e3af[i, j] = max(f[i-1, j], f[i][j - v] + w);\n             \/\/\u53ef\u4ee5\u6539\u5199\u4e3a\n    for(int i = 1; i &lt;= n; i ++)\n        for(int j = 0; j &lt;= m; j ++){\n            f[i][j] = f[i - 1][j];\n            if(j &gt;= v[i]) f[i][j] = max(f[i][j], f[i][j - v[i]] + w[i]);\n        }\n      \/\/\u6211\u4eec\u53ef\u4ee5\u50cf01\u80cc\u5305\u90a3\u6837\u63a5\u7740\u4f18\u5316\n    for(int i = 1; i &lt;= n; i ++)\n        for(int j = 0; j &lt;= m; j ++){\/\/2\u53ef\u4ee5\u5c06j\u4ecevi\u5f00\u59cb\uff0c\u5c31\u53ef\u4ee5\u53bb\u6389if\n            f[i][j] = f[i - 1][j];\/\/1\u5220\u9664\u4e00\u7ef4\u53d8\u4e3af[j] = f[j];\u53ef\u4ee5\u5220\u53bb\n            if(j &gt;= v[i]) f[i][j] = max(f[i][j], f[i][j - v[i]] + w[i]);\/\/\u5f53\u5220\u53bb\u4e00\u7ef4\u65f6\uff0cf[i][j - v[i]] + w[i]\u53ef\u4ee5\u76f4\u63a5\u53bb\u6389\u4e00\u7ef4\uff0c\u56e0\u4e3aj - v[i] &lt;= j\uff0c j\u5927\u4e8e\u524d\u9762\u7684\uff0c\u5df2\u7ecf\u8ba1\u7b97\u8fc7\uff0c\u6545\u53ef\u4ee5\u76f4\u63a5\u5220\u53bb\n        }\n          <\/code><\/pre>\n<p>\u6700\u7ec8\u7248\u672c<\/p>\n<pre><code class=\"c++\">#include &lt;iostream&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nconst int N = 1010;\n\nint n, m;\nint v[N], w[N];\nint f[N];\n\nint main()\n{\n    cin &gt;&gt; n &gt;&gt; m;\n    for (int i = 1; i &lt;= n; i ++ ) cin &gt;&gt; v[i] &gt;&gt; w[i];\n\n    for (int i = 1; i &lt;= n; i ++ )\n        for (int j = v[i]; j &lt;= m; j ++ )\n            f[j] = max(f[j], f[j - v[i]] + w[i]);\n\n    cout &lt;&lt; f[m] &lt;&lt; endl;\n\n    return 0;\n}<\/code><\/pre>\n<h4>[NOIP2018]\u8d27\u5e01\u7cfb\u7edf<\/h4>\n<h4>\u9898\u76ee\u63cf\u8ff0<\/h4>\n<p>\u5728\u7f51\u53cb\u7684\u56fd\u5ea6\u4e2d\u5171\u6709n\u79cd\u4e0d\u540c\u9762\u989d\u7684\u8d27\u5e01\uff0c\u7b2ci\u79cd\u8d27\u5e01\u7684\u9762\u989d\u4e3aa[i]\uff0c\u4f60\u53ef\u4ee5\u5047\u8bbe\u6bcf\u4e00\u79cd\u8d27\u5e01\u90fd\u6709\u65e0\u7a77\u591a\u5f20\u3002\u4e3a\u4e86\u65b9\u4fbf\uff0c\u6211\u4eec\u628a\u8d27\u5e01\u79cd\u6570\u4e3an\u3001\u9762\u989d\u6570\u7ec4\u4e3aa[1..n]\u7684\u8d27\u5e01\u7cfb\u7edf\u8bb0\u4f5c(n,a)\u3002<br \/>\u5728\u4e00\u4e2a\u5b8c\u5584\u7684\u8d27\u5e01\u7cfb\u7edf\u4e2d\uff0c\u6bcf\u4e00\u4e2a\u975e\u8d1f\u6574\u6570\u7684\u91d1\u989dx \u90fd\u5e94\u8be5\u53ef\u4ee5\u88ab\u8868\u793a\u51fa\uff0c\u5373\u5bf9\u6bcf\u4e00\u4e2a\u975e\u8d1f\u6574\u6570x\uff0c\u90fd\u5b58\u5728n\u4e2a\u975e\u8d1f\u6574\u6570t[i] \u6ee1\u8db3a[i] x t[i] \u7684\u548c\u4e3ax\u3002\u7136\u800c\uff0c\u5728\u7f51\u53cb\u7684\u56fd\u5ea6\u4e2d\uff0c<strong>\u8d27\u5e01\u7cfb\u7edf\u53ef\u80fd\u662f\u4e0d\u5b8c\u5584\u7684<\/strong>\uff0c\u5373\u53ef\u80fd\u5b58\u5728\u91d1\u989dx\u4e0d\u80fd\u88ab\u8be5\u8d27\u5e01\u7cfb\u7edf\u8868\u793a\u51fa\u3002\u4f8b\u5982\u5728\u8d27\u5e01\u7cfb\u7edfn=3, a=[2,5,9]\u4e2d\uff0c\u91d1\u989d1,3\u5c31\u65e0\u6cd5\u88ab\u8868\u793a\u51fa\u6765\u3002<br \/>\u4e24\u4e2a\u8d27\u5e01\u7cfb\u7edf(n,a)\u548c(m,b)\u662f\u7b49\u4ef7\u7684\uff0c\u5f53\u4e14\u4ec5\u5f53<strong>\u5bf9\u4e8e\u4efb\u610f\u975e\u8d1f\u6574\u6570x\uff0c\u5b83\u8981\u4e48\u5747\u53ef\u4ee5\u88ab\u4e24\u4e2a\u8d27\u5e01\u7cfb\u7edf\u8868\u51fa\uff0c\u8981\u4e48\u4e0d\u80fd\u88ab\u5176\u4e2d\u4efb\u4f55\u4e00\u4e2a\u8868\u51fa\u3002<\/strong><br \/>\u73b0\u5728\u7f51\u53cb\u4eec\u6253\u7b97\u7b80\u5316\u4e00\u4e0b\u8d27\u5e01\u7cfb\u7edf\u3002\u4ed6\u4eec\u5e0c\u671b\u627e\u5230\u4e00\u4e2a\u8d27\u5e01\u7cfb\u7edf(m,b)\uff0c\u6ee1\u8db3(m,b) \u4e0e\u539f\u6765\u7684\u8d27\u5e01\u7cfb\u7edf(n,a)\u7b49\u4ef7\uff0c\u4e14m\u5c3d\u53ef\u80fd\u7684\u5c0f\u3002\u4ed6\u4eec\u5e0c\u671b\u4f60\u6765\u534f\u52a9\u5b8c\u6210\u8fd9\u4e2a\u8270\u5de8\u7684\u4efb\u52a1\uff1a\u627e\u5230\u6700\u5c0f\u7684m\u3002<\/p>\n<h4>\u8f93\u5165\u63cf\u8ff0:<\/h4>\n<pre><code>\u8f93\u5165\u7684\u7b2c\u4e00\u884c\u5305\u542b\u4e00\u4e2a\u6574\u6570T,\u8868\u793a\u6570\u636e\u7ec4\u6570\u3002\u63a5\u4e0b\u6765\u6309\u7167\u5982\u4e0b\u683c\u5f0f\u5206\u522b\u7ed9\u51faT\u7ec4\u6570\u636e\u3002\n\u6bcf\u7ec4\u6570\u636e\u7684\u7b2c\u4e00\u884c\u5305\u542b\u4e00\u4e2a\u6b63\u6574\u6570n\u3002\u63a5\u4e0b\u6765\u4e00\u884c\u5305\u542bn\u4e2a\u7531\u7a7a\u683c\u9694\u5f00\u7684\u6b63\u6574\u6570a[i]\u3002<\/code><\/pre>\n<h4>\u8f93\u51fa\u63cf\u8ff0:<\/h4>\n<pre><code>\u8f93\u51fa\u6587\u4ef6\u5171T\u884c, \u5bf9\u4e8e\u6bcf\u7ec4\u6570\u636e, \u8f93\u51fa\u4e00\u884c\u4e00\u4e2a\u6b63\u6574\u6570, \u8868\u793a\u6240\u6709\u4e0e(n, a)\u7b49\u4ef7\u7684\u8d27\u5e01\u7cfb\u7edf(m, b)\u4e2d, \u6700\u5c0f\u7684m\u3002              <\/code><\/pre>\n<h4>\u8f93\u5165<\/h4>\n<pre><code>2\n4\n3 19 10 6\n5\n11 29 13 19 17<\/code><\/pre>\n<h4>\u8f93\u51fa<\/h4>\n<pre><code>2\n5<\/code><\/pre>\n<h4>\u8bf4\u660e<\/h4>\n<pre><code>\u5728\u7b2c\u4e00\u7ec4\u6570\u636e\u4e2d\uff0c\u8d27\u5e01\u7cfb\u7edf(2, [3,10])\u548c\u7ed9\u51fa\u7684\u8d27\u5e01\u7cfb\u7edf(n, a)\u7b49\u4ef7\uff0c\u5e76\u53ef\u4ee5\u9a8c\u8bc1\u4e0d\u5b58\u5728m &lt; 2\u7684\u7b49\u4ef7\u7684\u8d27\u5e01\u7cfb\u7edf\uff0c\u56e0\u6b64\u7b54\u6848\u4e3a2\u3002\n\u5728\u7b2c\u4e8c\u7ec4\u6570\u636e\u4e2d\uff0c\u53ef\u4ee5\u9a8c\u8bc1\u4e0d\u5b58\u5728m &lt; n\u7684\u7b49\u4ef7\u7684\u8d27\u5e01\u7cfb\u7edf\uff0c\u56e0\u6b64\u7b54\u6848\u4e3a5\u3002<\/code><\/pre>\n<pre><code class=\"C++\">#include &lt;bits\/stdc++.h&gt;\n\nusing namespace std;\nconst int N = 110;\nint a[N];\nint f[25010];\nint main(){\n    int t;\n    cin &gt;&gt; t;\n    while(t --){\n        int n;\n        cin &gt;&gt; n;\n        int ans = 0;\n        memset(f, 0, sizeof f);\n        for(int i = 1; i &lt;= n; i ++) cin &gt;&gt; a[i];\n        sort(a + 1, a + n + 1);\n        for(int i = 1; i &lt;= n; i ++){\n            if(f[a[i]]) continue;\n            ans++, f[a[i]] = 1;\n            for(int j = a[i]; j &lt;= a[n]; j++){\n                if(f[j - a[i]]) f[j] = 1;\n            }\n        }\n        cout &lt;&lt; ans &lt;&lt; endl;\n    }\n    return 0;\n}\n\/\/\u5206\u6790\u9898\u76ee\uff0c\u5982\u679c\u7b2ci\u79cd\u8d27\u5e01\u53ef\u4ee5\u53bb\u6389\uff0c\u90a3\u4e48\u53ef\u4ee5\u63a8\u51fa\u6709f[a[j]]\u5df2\u7ecf\u5b58\u5728\uff0c\u5373\u8d27\u5e01\u53ef\u4ee5\u7531\u9664\u53bb\u672c\u8eab\u5916\u5176\u4ed6\u79cd\u7c7b\u7684\u8d27\u5e01\u51d1\u51fa\uff0c\u90a3\u4e48\u6b64\u79cd\u8d27\u5e01\u65e2\u53ef\u4ee5\u88ab\u53bb\u6389\uff0c\u6211\u4eec\u5206\u6790\u6bcf\u79cd\u8d27\u5e01\u53ef\u4ee5\u53d6\u65e0\u9650\u6b21\uff0c\u4e14\u524d\u4e00\u6b21\u53ef\u4ee5\u63a8\u51fa\u540e\u4e00\u6b21\uff0c\u60f3\u5230\u53ef\u4ee5\u7528\u5b8c\u5168\u80cc\u5305\u3002\u6211\u4eec\u679a\u4e3e\u8d27\u5e01\u79cd\u7c7b\uff0c\u518d\u679a\u4e3e\u4ece\u5f53\u524d\u8d27\u5e01\u9762\u989d\u5230\u6700\u5927\u9762\u989d\uff0c\u5982\u679c\u9762\u989d\u51cf\u53bb\u5f53\u524d\u8d27\u5e01\u5df2\u7ecf\u53ef\u4ee5\u51d1\u51fa\uff0c\u90a3\u4e48\u6211\u4eec\u53ef\u4ee5\u63a8\u51fa\u6b64\u9762\u989d\u4e5f\u53ef\u4ee5\u51d1\u51fa\u3002\u5982\u679c\u6211\u4eec\u4ece\u6700\u5c0f\u9762\u989d\u679a\u4e3e\u5230\u6700\u5927\u9762\u989d\u65f6\uff0c\u5982\u679c\u51fa\u73b0\u672a\u88ab\u6807\u8bb0\u7684\u9762\u989d\u65f6\uff0c\u8bf4\u660e\u8fd9\u5f20\u8d27\u5e01\u4e0d\u53ef\u88ab\u66ff\u4ee3\uff0c\u5373ans++\uff1b\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u662f\u56e0\u4e3a\u6211\u4eec\u53ef\u4ee5\u4ece\u5c0f\u9762\u989d\u8d27\u5e01\u51d1\u51fa\u5927\u9762\u989d\u3002<\/code><\/pre>\n<h3>\u591a\u91cd\u80cc\u5305and\u591a\u91cd\u80cc\u5305\uff08\u4f18\u5316\u7248\uff09<\/h3>\n<p>\u6bcf\u4e2a\u7269\u54c1\u7684\u4e2a\u6570\u4e2a\u6570\u4e3a\u6709\u9650\u4e2a\uff08\u9898\u76ee\u7ed9\u51fa\uff09<\/p>\n<h4>\u672a\u4f7f\u7528\u4e8c\u8fdb\u5236\u4f18\u5316\u7248\u672c\uff08\u66b4\u529b\uff09<\/h4>\n<p>\u6709 N \u79cd\u7269\u54c1\u548c\u4e00\u4e2a\u5bb9\u91cf\u662f V \u7684\u80cc\u5305\u3002<\/p>\n<p>\u7b2c ii \u79cd\u7269\u54c1\u6700\u591a\u6709 s~i~ \u4ef6\uff0c\u6bcf\u4ef6\u4f53\u79ef\u662f vivi\uff0c\u4ef7\u503c\u662f wiwi\u3002<\/p>\n<p>\u6c42\u89e3\u5c06\u54ea\u4e9b\u7269\u54c1\u88c5\u5165\u80cc\u5305\uff0c\u53ef\u4f7f\u7269\u54c1\u4f53\u79ef\u603b\u548c\u4e0d\u8d85\u8fc7\u80cc\u5305\u5bb9\u91cf\uff0c\u4e14\u4ef7\u503c\u603b\u548c\u6700\u5927\u3002<br \/>\u8f93\u51fa\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u8f93\u5165\u683c\u5f0f<\/h4>\n<p>\u7b2c\u4e00\u884c\u4e24\u4e2a\u6574\u6570\uff0cN\uff0cVN\uff0cV\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7269\u54c1\u79cd\u6570\u548c\u80cc\u5305\u5bb9\u79ef\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u6709 NN \u884c\uff0c\u6bcf\u884c\u4e09\u4e2a\u6574\u6570 vi,wi,sivi,wi,si\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7b2c ii \u79cd\u7269\u54c1\u7684\u4f53\u79ef\u3001\u4ef7\u503c\u548c\u6570\u91cf\u3002<\/p>\n<h4>\u8f93\u51fa\u683c\u5f0f<\/h4>\n<p>\u8f93\u51fa\u4e00\u4e2a\u6574\u6570\uff0c\u8868\u793a\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u6570\u636e\u8303\u56f4<\/h4>\n<p>0&lt;N,V\u22641000&lt;N,V\u2264100<br \/>0&lt;vi,wi,si\u22641000&lt;vi,wi,si\u2264100<\/p>\n<h4>\u8f93\u5165\u6837\u4f8b<\/h4>\n<pre><code>4 5\n1 2 3\n2 4 1\n3 4 3\n4 5 2<\/code><\/pre>\n<h4>\u8f93\u51fa\u6837\u4f8b\uff1a<\/h4>\n<pre><code>10<\/code><\/pre>\n<pre><code class=\"C++\">#include &lt;iostream&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nconst int N = 110;\n\nint n, m;\nint v[N], w[N], s[N];\nint f[N][N];\n\nint main()\n{\n    cin &gt;&gt; n &gt;&gt; m;\n\n    for (int i = 1; i &lt;= n; i ++ ) cin &gt;&gt; v[i] &gt;&gt; w[i] &gt;&gt; s[i];\n\n    for (int i = 1; i &lt;= n; i ++ )\n        for (int j = 0; j &lt;= m; j ++ )\n            for (int k = 0; k &lt;= s[i] &amp;&amp; k * v[i] &lt;= j; k ++ )\n                f[i][j] = max(f[i][j], f[i - 1][j - v[i] * k] + w[i] * k);\n\n    cout &lt;&lt; f[n][m] &lt;&lt; endl;\n    return 0;\n}<\/code><\/pre>\n<h4>\u4e8c\u8fdb\u5236\u4f18\u5316\u7248\u672c\uff08\u66b4\u529b\uff09<\/h4>\n<p>\u6709 N \u79cd\u7269\u54c1\u548c\u4e00\u4e2a\u5bb9\u91cf\u662f V \u7684\u80cc\u5305\u3002<\/p>\n<p>\u7b2c ii \u79cd\u7269\u54c1\u6700\u591a\u6709 si\u4ef6\uff0c\u6bcf\u4ef6\u4f53\u79ef\u662f vi\uff0c\u4ef7\u503c\u662f wi\u3002<\/p>\n<p>\u6c42\u89e3\u5c06\u54ea\u4e9b\u7269\u54c1\u88c5\u5165\u80cc\u5305\uff0c\u53ef\u4f7f\u7269\u54c1\u4f53\u79ef\u603b\u548c\u4e0d\u8d85\u8fc7\u80cc\u5305\u5bb9\u91cf\uff0c\u4e14\u4ef7\u503c\u603b\u548c\u6700\u5927\u3002<br \/>\u8f93\u51fa\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u8f93\u5165\u683c\u5f0f<\/h4>\n<p>\u7b2c\u4e00\u884c\u4e24\u4e2a\u6574\u6570\uff0cN\uff0cV \u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7269\u54c1\u79cd\u6570\u548c\u80cc\u5305\u5bb9\u79ef\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u6709 N \u884c\uff0c\u6bcf\u884c\u4e09\u4e2a\u6574\u6570 vi,wi,si\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7b2c ii \u79cd\u7269\u54c1\u7684\u4f53\u79ef\u3001\u4ef7\u503c\u548c\u6570\u91cf\u3002<\/p>\n<h4>\u8f93\u51fa\u683c\u5f0f<\/h4>\n<p>\u8f93\u51fa\u4e00\u4e2a\u6574\u6570\uff0c\u8868\u793a\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u6570\u636e\u8303\u56f4<\/h4>\n<p>0&lt;N\u22641000<br \/>0&lt;V\u22642000<br \/>0&lt;vi,wi,si\u22642000<\/p>\n<h5>\u63d0\u793a\uff1a<\/h5>\n<p>\u672c\u9898\u8003\u67e5\u591a\u91cd\u80cc\u5305\u7684\u4e8c\u8fdb\u5236\u4f18\u5316\u65b9\u6cd5\u3002<\/p>\n<h4>\u8f93\u5165\u6837\u4f8b<\/h4>\n<pre><code>4 5\n1 2 3\n2 4 1\n3 4 3\n4 5 2<\/code><\/pre>\n<h4>\u8f93\u51fa\u6837\u4f8b\uff1a<\/h4>\n<pre><code>10<\/code><\/pre>\n<pre><code class=\"C++\">#include &lt;iostream&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nconst int N = 12010, M = 2010;  \/\/\u4e00\u5171\u6709n\u4e2a\u7269\u54c1\uff0c\u6bcf\u4e2a\u7269\u54c1\u6700\u591a\u62c6\u5206\u6210logsi\uff0c\u6240\u4ee5\u6570\u7ec4\u5927\u5c0f\u4e3anlogsi\n\nint n, m;\nint v[N], w[N];\nint f[M];\n\nint main()\n{\n    cin &gt;&gt; n &gt;&gt; m;\n\n    int cnt = 0;\n    for (int i = 1; i &lt;= n; i ++ )\n    {\n        int a, b, s;\n        cin &gt;&gt; a &gt;&gt; b &gt;&gt; s;\n        int k = 1;\n        while (k &lt;= s)\n        {\n            cnt ++ ;\n            v[cnt] = a * k;\/\/\u8fd9\u4e2a\u8fc7\u7a0b\u76f8\u5f53\u4e8e\u628asi\u4e2a\u7269\u54c1\u5206\u62101\uff0c2\uff0c4\uff0c8~~\uff0c\u76f8\u5f53\u4e8e\u628asi\u53bb\u6389\u7b49\u4ef7\u4e3a\u6362\u6210\u88ab\u5206\u5272\u7269\u54c1\u9009\u6216\u8005\u4e0d\u9009\u7684\u95ee\u9898\uff0c\u5c31\u6210\u4e8601\u80cc\u5305\u95ee\u9898\n            w[cnt] = b * k;\n            s -= k;\n            k *= 2;\n        }\n        if (s &gt; 0)\n        {\n            cnt ++ ;\n            v[cnt] = a * s;\n            w[cnt] = b * s;\n        }\n    }\n\n    n = cnt;\n\n    for (int i = 1; i &lt;= n; i ++ )\n        for (int j = m; j &gt;= v[i]; j -- )\n            f[j] = max(f[j], f[j - v[i]] + w[i]);\n\n    cout &lt;&lt; f[m] &lt;&lt; endl;\n\n    return 0;\n}<\/code><\/pre>\n<h3>\u5206\u7ec4\u80cc\u5305<\/h3>\n<p>\u6bcf\u7ec4\u4e2d\u53ea\u591a\u53ea\u80fd\u9009\u4e00\u4e2a<\/p>\n<p>\u6709 N \u7ec4\u7269\u54c1\u548c\u4e00\u4e2a\u5bb9\u91cf\u662f V \u7684\u80cc\u5305\u3002<\/p>\n<p>\u6bcf\u7ec4\u7269\u54c1\u6709\u82e5\u5e72\u4e2a\uff0c\u540c\u4e00\u7ec4\u5185\u7684\u7269\u54c1\u6700\u591a\u53ea\u80fd\u9009\u4e00\u4e2a\u3002<br \/>\u6bcf\u4ef6\u7269\u54c1\u7684\u4f53\u79ef\u662f v~ij~\uff0c\u4ef7\u503c\u662f w~ij~\uff0c\u5176\u4e2d i \u662f\u7ec4\u53f7\uff0cj \u662f\u7ec4\u5185\u7f16\u53f7\u3002<\/p>\n<p>\u6c42\u89e3\u5c06\u54ea\u4e9b\u7269\u54c1\u88c5\u5165\u80cc\u5305\uff0c\u53ef\u4f7f\u7269\u54c1\u603b\u4f53\u79ef\u4e0d\u8d85\u8fc7\u80cc\u5305\u5bb9\u91cf\uff0c\u4e14\u603b\u4ef7\u503c\u6700\u5927\u3002<\/p>\n<p>\u8f93\u51fa\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u8f93\u5165\u683c\u5f0f<\/h4>\n<p>\u7b2c\u4e00\u884c\u6709\u4e24\u4e2a\u6574\u6570 N\uff0cV\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7269\u54c1\u7ec4\u6570\u548c\u80cc\u5305\u5bb9\u91cf\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u6709 N \u7ec4\u6570\u636e\uff1a<\/p>\n<ul>\n<li>\u6bcf\u7ec4\u6570\u636e\u7b2c\u4e00\u884c\u6709\u4e00\u4e2a\u6574\u6570 S~i~\uff0c\u8868\u793a\u7b2c ii \u4e2a\u7269\u54c1\u7ec4\u7684\u7269\u54c1\u6570\u91cf\uff1b<\/li>\n<li>\u6bcf\u7ec4\u6570\u636e\u63a5\u4e0b\u6765\u6709 Si\u884c\uff0c\u6bcf\u884c\u6709\u4e24\u4e2a\u6574\u6570 vij,wij\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7b2c ii \u4e2a\u7269\u54c1\u7ec4\u7684\u7b2c jj \u4e2a\u7269\u54c1\u7684\u4f53\u79ef\u548c\u4ef7\u503c\uff1b<\/li>\n<\/ul>\n<h4>\u8f93\u51fa\u683c\u5f0f<\/h4>\n<p>\u8f93\u51fa\u4e00\u4e2a\u6574\u6570\uff0c\u8868\u793a\u6700\u5927\u4ef7\u503c\u3002<\/p>\n<h4>\u6570\u636e\u8303\u56f4<\/h4>\n<p>0&lt;N,V\u2264100<br \/>0&lt;Si\u2264100<br \/>0&lt;vij,wij\u2264100<\/p>\n<h4>\u8f93\u5165\u6837\u4f8b<\/h4>\n<pre><code>3 5\n2\n1 2\n2 4\n1\n3 4\n1\n4 5<\/code><\/pre>\n<h4>\u8f93\u51fa\u6837\u4f8b\uff1a<\/h4>\n<pre><code>8<\/code><\/pre>\n<pre><code class=\"C++\">#include &lt;iostream&gt;\n#include &lt;algorithm&gt;\n\nusing namespace std;\n\nconst int N = 110;\n\nint n, m;\nint v[N][N], w[N][N], s[N];\nint f[N];\n\nint main()\n{\n    cin &gt;&gt; n &gt;&gt; m;\n\n    for (int i = 1; i &lt;= n; i ++ )\n    {\n        cin &gt;&gt; s[i];\n        for (int j = 0; j &lt; s[i]; j ++ )\n            cin &gt;&gt; v[i][j] &gt;&gt; w[i][j];\n    }\n\n    for (int i = 1; i &lt;= n; i ++ )\n        for (int j = m; j &gt;= 0; j -- )\n            for (int k = 0; k &lt; s[i]; k ++ )\n                if (v[i][k] &lt;= j)\n                    f[j] = max(f[j], f[j - v[i][k]] + w[i][k]);\n\n    cout &lt;&lt; f[m] &lt;&lt; endl;\n\n    return 0;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u52a8\u6001\u89c4\u5212 \u80cc\u5305\u95ee\u9898 01\u80cc\u5305 \u6bcf\u4e2a\u7269\u54c1\u6700\u591a\u7528\u4e00\u6b21 \u6709 N \u4ef6\u7269\u54c1\u548c\u4e00\u4e2a\u5bb9\u91cf\u662f V \u7684\u80cc\u5305\u3002\u6bcf\u4ef6\u7269\u54c1\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\u3002 \u7b2c i \u4ef6\u7269\u54c1\u7684\u4f53\u79ef\u662f v~i~\uff0c\u4ef7\u503c\u662fw~i~\u3002 \u6c42\u89e3\u5c06\u54ea\u4e9b\u7269\u54c1\u88c5\u5165\u80cc\u5305\uff0c\u53ef\u4f7f\u8fd9\u4e9b\u7269\u54c1\u7684\u603b\u4f53\u79ef\u4e0d\u8d85\u8fc7\u80cc\u5305\u5bb9\u91cf\uff0c\u4e14\u603b\u4ef7\u503c\u6700\u5927\u3002\u8f93\u51fa\u6700\u5927\u4ef7\u503c\u3002 \u8f93\u5165\u683c\u5f0f \u7b2c\u4e00\u884c\u4e24\u4e2a\u6574\u6570\uff0cN\uff0cV\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7269\u54c1\u6570\u91cf\u548c\u80cc\u5305\u5bb9\u79ef\u3002 \u63a5\u4e0b\u6765\u6709 N \u884c\uff0c\u6bcf\u884c\u4e24\u4e2a\u6574\u6570 v~i~\uff0cw~i~\uff0c\u7528\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u522b\u8868\u793a\u7b2c i \u4ef6\u7269\u54c1\u7684\u4f53\u79ef\u548c\u4ef7\u503c\u3002 \u8f93\u51fa\u683c\u5f0f \u8f93\u51fa\u4e00\u4e2a\u6574\u6570\uff0c\u8868\u793a\u6700\u5927\u4ef7\u503c\u3002 \u6570\u636e\u8303\u56f4 0&lt;N,V\u226410000&lt;v~i~\uff0cw~i~\u22641000 \u8f93\u5165\u6837\u4f8b 4 5 1 2 2 4 3 4 4 5 \u8f93\u51fa\u6837\u4f8b\uff1a 8 \u4e8c\u7ef4\u8868\u793a #include &lt;bits\/stdc++.h&gt; using namespace std; const int N = 1e3 + 10; int n, m; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72],"tags":[],"class_list":["post-4","post","type-post","status-publish","format-standard","hentry","category-acm"],"_links":{"self":[{"href":"https:\/\/solost.cn\/index.php?rest_route=\/wp\/v2\/posts\/4","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solost.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solost.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solost.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solost.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4"}],"version-history":[{"count":0,"href":"https:\/\/solost.cn\/index.php?rest_route=\/wp\/v2\/posts\/4\/revisions"}],"wp:attachment":[{"href":"https:\/\/solost.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solost.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solost.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}