摘要:
算法标签:排序,随机化,分治。 我这个人很喜欢比较玄学但是优秀的算法和数据结构。 众所周知,我们考试的时候经常遇到毒瘤出题人卡算法。但是我们也知道:“如果我自己都不知道我在干什么,你就别想卡我啦。” 所以说 \(mt19937\) 天下第一!(不是CCF准用 c++14了嘛) 浅谈mt19937 简 阅读全文
摘要:
我们考虑一个问题 玩具装箱 我们很简单可以求出 $O(n^2)$ 的巨简单的做法。 我们设 $f_i$ 表示 $$f_i=min_{j<i}{f_j+(sum_i-sum_j+i-j-1-L)^2}$$ 我们考虑用 $s_x$ 代替 $sum_x+x$, $L'$ 代替 $L+1$ ,并且把与 $j 阅读全文
摘要:
用于优化多重背包。 对于每一种物品的可选个数,把它按照二进制拆分出来,如: \(24->1+2+4+8+9\) 然后把这些数分别乘到大小和价值数组里面(每个数开一个)然后跑01背包即可。 因为这样的数可以拼凑出所以需要的情况。 代码实现如下: for(int i=1;i<=n;++i){ int C 阅读全文
摘要:
模板题链接:P2516 HAOI2010最长公共子序列 我们借题解第一篇的巨佬的图 我们$O(n^2)$的枚举$i$,\(j\)(分别对应两个串的下标) 我们记两串分别为$a,b$,记$dp[i][j]$为截止到$i,j$时的最长公共子序列,如果$a[i]==b[j]$匹配成功,我们可直接用$dp[ 阅读全文
摘要:
突然发现自己dp极其菜,背包一个不会/kk(我没开玩笑) 那全部学一遍。 01背包 问题:n 种物品,每种物品有一个大小 \(v_i\),一个价值 \(c_i\) 可以选择一个或不选,求背包容量为 m 的情况下(指所选物品大小之和小于等于m)选择的物品价值和的最大值。 我们可以设 \(f_{i,j} 阅读全文