11 2020 档案
摘要:因为每件物品可以无限买,所以是完全背包。 三种商品重量手动赋值即可。 因为这道题求的是最大重量,所以状态转移方程改为 f[j] = max(f[j],f[j - w[i]] + w[i]) 。 #include<bits/stdc++.h> using namespace std; int w[4]
阅读全文
摘要:emmm 01 背包模板... 设 f[i] 表示背包容积为 i 时所得的最大价值。 则状态转移方程为 f[j] = f[j - w[i]] + c[i] 。 #include<bits/stdc++.h> using namespace std; int w[1001],c[1001],t,m,f
阅读全文
摘要:01背包问题。 与模板不同,这道题要求的是最小剩余空间,也就是求背包里最多能放多少东西。 所以状态转移方程变为 fi= fi - w[i] + wi 。 其中 fi 表示当背包容量为 i 时可放的最大重量。 注意要倒着循环。 #include<bits/stdc++.h> using namespa
阅读全文
摘要:然而并不会做。 最后就照着题解码了一遍/kk 真的好长啊。看时间就知道写了多久... upd in 2022: 我现在已经找不到原题面是什么了( 不过感觉把这样一篇不算题解的东西放进“题解”里,多少有点不合适呢() #include<bits/stdc++.h> using namespace st
阅读全文
摘要:大概是我第一道没看题解写出来的 bfs 。 又写了 30min ,尽管题确实挺简单的。 总结下自己的错误: 注意判断边界和已经走过的路。 不能直接读入,要用字符串,因为矩阵里没有空格。 直接 bfs 即可。 #include<bits/stdc++.h> using namespace std; s
阅读全文
摘要:一些废话: 怎么说写完前两道题再写这道题思路就顺畅多了。但还是写了半个小时。 依然是 dfs 。。。和上两道题思路挺像的。 首先,根据 拔河比赛两边人数最多不能相差 1。 可得:如果 n 是偶数那么两组的人数就只能相等,如果 n 是奇数那么我们只要选出人数为 (n-1)/2 的一组就行了。 所以要选
阅读全文
摘要:dfs。又调了一个小时,窝果然菜 需要传递的变量分别为目前搜索的数字;目前所有选中数字的和;目前所选数字个数。 见注释。 #include<bits/stdc++.h> using namespace std; int n,ans[1001];//题面似乎没给数据范围。。。 void dfs (in
阅读全文
摘要:一看就是 dfs 然而窝并不会做 调了一个多小时才调出来。漏洞连篇。(第一次写的基本没有对的地方QAQ 题解见注释。 #include<bits/stdc++.h> using namespace std; int n,r,ans[22]; void dfs(int a,int b)//a 表示当前
阅读全文