<<<<<<<动态规划>>>>>>>
文章平均质量分 68
I_AM_HelloWord
爱好编程信息学
展开
-
浅谈单调队列优化dp
什么是单调队列?举个浅显的例子:滑动窗口:给出n个数,要求从每个位置开始到其后的k位中的最大值。显然这题可以用RMQ问题的做法解,但用单调队列效率最高。我们维护一个队列,这个队列有两个参数,一个是位置编号,一个是其值,这个队列具有“编号单调增,值单调减”的特点,因为如果i>j,且a[i]>a[j],显然只要i和j在一个窗口中,j就不会是最大值,我们可以把j删掉(对于冗余状态原创 2016-10-25 19:25:40 · 1050 阅读 · 0 评论 -
经典问题之01与完全背包总结
01:1.基础题型,伪代码: i= 1 to n j= W to 1 f[j]=max{f[j-w[i]]+v[i]};2.W超大,n=20版;思路:折半枚举,先枚举前十个的选物情况,记录,再枚举后十个的,累计即可。3.W超大,n正常,V较小思路:改变f[j]的定义,设f[j]表示要取价值总和为j的物品最少需要多少多少包重,结果原创 2016-07-13 12:30:24 · 273 阅读 · 0 评论 -
经典问题之多重背包的总结与提升
多重背包:1.基础题型伪代码: i=1 to n j=1 to W k=1 to m[i] f[j]=max{f[j-k*w[i]]+k*v[i]}2.加强版(一)对于数据不是特别紧的可采用二进制法,效率O(nW log m) 解析:对于每个m[i],我们可以分解成2^0+2^1+2^2...+2^k+a(a为m[i原创 2016-07-13 13:10:00 · 853 阅读 · 0 评论 -
平方分组
分组【问题描述】小 w 是扬中的高一新生。俗话说新官上任三把火,作为班长,第一件事自然是要给全班分座位。这可不是一件简单的任务。大家都知道学霸是一种环境不友好型生物,所以在一个组里,学霸会对同组的学渣造成巨大伤害。具体来说,我们定义一个组的不和谐度为本组的最高成绩与最低成绩差的平方。如一个组内的分数为 4 7 10 1,那么不和谐度为(10-1)^2=81。现在,班原创 2016-11-15 12:41:51 · 447 阅读 · 0 评论 -
多叉树的树形背包常见建模方法
一.多叉树变二叉树。这个技巧其实也有两种具体的方法:树的孩子兄弟表示法与dfs序法。1.树的孩子兄弟表示法。 大家在学习树形结构时一定接触了一个多叉树变二叉树的方法,就是把每个点与它的第一个儿子连边,然后将它的儿子依次连接起来。可以结合下面的图片理解这句话。总结成口诀就是:第一个儿子是左子树,其他儿子是左子树的右子树(似乎并不押韵,手动滑稽)2.dfs序法原创 2017-09-03 20:04:58 · 8996 阅读 · 6 评论 -
poj之旅——1050
题目描述:给出一个矩阵(100×100)求一个子矩阵,使得子矩阵中各个元素的和最大题解:四重循环预处理10^8,效率不够;如何做到三重循环呢?枚举矩阵的起始行与终止行,然后将行之间的数字累加成和,压缩成一行数字,然后求这行数字的最大子序列即可。参考程序:#include#include#includeusing namespace std;int原创 2016-10-20 21:50:07 · 251 阅读 · 0 评论 -
poj之旅——1018
题目描述:某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2、m3、...、mn个厂家提供生产,而每个厂家生产的同种设备都会存在两个方面的差别:带宽bandwidths 和 价格prices。现在每种设备都各需要1个,考虑到性价比问题,要求所挑选出来的n件设备,要使得B/P最大。其中B为这n件设备的带宽的最小值,P为这n件设备的总价原创 2016-10-20 21:47:31 · 279 阅读 · 0 评论 -
经典问题之合法括号序列
题目描述:给出n,表示在2*n个空位上填(或),使得整个序列是合法的。问总共有多少种方案。分析:显然裸裸的搜索是可以的,但是效率比较低。如果我们定义状态f[i][j],表示前i个空位,还需j个)就是合法序列的方案数。那么就很简单了,f[i][j]=f[i-1][j-1]+f[i-1][j+1]。参考程序:#include#include#include原创 2016-11-11 11:56:46 · 4856 阅读 · 1 评论 -
poj之旅——1015
描述在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对原创 2016-11-10 18:07:54 · 560 阅读 · 0 评论 -
poj之旅——1083,1088,1125,1157,1163
一些比较简单的dp题,光看图就能猜到意思。1125:#include#include#includeusing namespace std;int n;int f[110][110];int main(){ while (scanf("%d",&n)==1 && n){ memset(f,0x3f,sizeof(f)); for (int i=1;i<=n;i++){原创 2016-11-10 17:58:22 · 282 阅读 · 0 评论 -
树状数组拓展笔记
解决问题:给出一组序列,有n个,分别为a1,a2......,an,现有两个操作: 1.A i x把ai的值增加x 2.Q l r把l到r的和求出解决方法:这是树状数组的提出的原因和基本问题,具体将在以后的基础讲解中回顾,直接上代码: struct Bit{ int b[maxn]; int bit(int x){ r原创 2016-06-19 19:21:37 · 849 阅读 · 0 评论