随笔分类 - 基础算法——DP
十分常用的算法,大致目录如下:
普通DP,记忆化搜索(实质是DP,但在实现方式上与普通DP各有优劣),状压DP,数位DP,树形DP,区间DP,概率/期望DP,数学DP,插头DP,最短路DP。。。。。。。。
各类常见DP优化如下:
单调队列优化,斜率优化,决策单调性优化(其实上面两种某种意义上也包括在这里面)
摘要:第一次写这种二分来优化决策单调性的问题。。。。 调了好久,,,各种细节问题 显然有DP方程: $f[i]=min(f[j] + qpow(abs(sum[i] - sum[j] - L - 1)));$ 其中f[i]代表到了第i个句子的最小答案 qpow用于处理^p sum为前缀和 (同时为了处理句
阅读全文
摘要:斜率优化DP先考虑朴素DP方程,f[i][k]代表第k个厂建在i棵树那里的最小代价,最后答案为f[n+1][3];f[i][k]=min(f[j][k-1] + 把j+1~i的树都运到i的代价)首先注意到“把j+1~i的树都运到i的代价”不太方便表达,每次都暴力计算显然是无法承受的,于是考虑前缀和优
阅读全文
摘要:感觉是一道很妙的树形DP题,充分利用到了树的性质(虽然说点分治也可以做,,,,但是本蒟蒻不会啊) 然而某Twilight_Sx大佬表示这道题真的非常水,,,本蒟蒻也只能瑟瑟发抖了 本蒟蒻表示还是要经过一些思考的吧 虽然说是要获取概率,但是要输出分数形式,显然直接算可能获胜的次数再除所有可能,并且用g
阅读全文
摘要:DP,递推,组合数 其实相当于就是一个递推推式子,然后要用到一点组合数的知识 一道很妙的题,因为不能互相攻击,所以任意行列不能有超过两个炮 首先令f[i][j][k]代表前i行,有j列为一个炮,有k列为两个炮的方案 那么有如下转移: 1,这行不放炮,add+=f[i-1][j][k]; 2,放一个炮
阅读全文
摘要:非常妙的树形DP:由于n很小,我们可以枚举每一个点作为第一个节点,计算其时间花费 那么问题就转化为对于给点节点求花费时间。 通过观察,显然我们会发现先传给花费时间多的人更加合算,因为这样可以最大限度的避免 一个人还在辛苦的传递信息,另一个人却悠闲的喝下午茶(雾)的局面 所以我们可以每次都记录下对于一
阅读全文

浙公网安备 33010602011771号