随笔分类 -  ACM——DP

摘要:状态转移方程在代码中标出 本题注意是圆形,所以之前要预先处理一下s数组。处理之后总长度为2*n-1.第一个合并的起点有n个,所以总的方案数是n 注释在代码中标出 http://www.rqnoj.cn/problem/490 石子合并问题推荐几篇很好的文章 http://blog.csdn.net/ 阅读全文
posted @ 2016-05-06 17:55 yyblues 阅读(232) 评论(0) 推荐(0)
摘要:Tree2cycle dfs 不是根节点:如果边数大于等于2,则删除与父节点的边。并且是一条环,那么每个点的度数是2,则还要删除num(每个节点儿子数)-2,只留两个儿子。当然删除边的儿子也要连到环上,又是一个num(每个节点儿子数)-2次操作。最后不同分支之间还要连一条边。所以复杂度为:2*(nu 阅读全文
posted @ 2016-04-24 00:10 yyblues 阅读(395) 评论(0) 推荐(0)
摘要:借鉴大神思路。。。 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<iostream> 5 #include<queue> 6 #include<stack> 7 #include<cmath> 8 #inc 阅读全文
posted @ 2016-04-23 22:32 yyblues 阅读(238) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/acdreamers/article/details/7626671 学习一下Dilworth定理 推荐一篇写得很好博客 要求最少的覆盖,按照Dilworth定理 最少链划分 = 最长反链长度 所以最少系统 = 最长导弹高度上升序列长度。 之前写的LIS模板 阅读全文
posted @ 2016-04-18 22:07 yyblues 阅读(220) 评论(0) 推荐(0)
摘要:dp[i][j]表示i到j需要添加的长度 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<queue> 5 #include<stack> 6 using namespace std; 7 #define 阅读全文
posted @ 2016-04-15 20:23 yyblues 阅读(293) 评论(0) 推荐(0)
摘要:求树的重心,直接当模板吧。先看POJ题目就知道重心什么意思了。。。 重心:删除该节点后最大连通块的节点数目最小 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<queue> 5 #include<stack 阅读全文
posted @ 2016-04-14 22:40 yyblues 阅读(320) 评论(0) 推荐(0)
摘要:简单树形DP 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cstdlib> 5 using namespace std; 6 int n,w[6001],ne=0; 7 bool in[6001]; 8 阅读全文
posted @ 2016-04-13 23:09 yyblues 阅读(243) 评论(0) 推荐(0)
摘要:先枚举行再DP列。好题,详见代码 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <climits> 5 #include <vector> 6 #include <iostream> 7 using 阅读全文
posted @ 2016-04-06 19:34 yyblues 阅读(345) 评论(0) 推荐(0)
摘要:题意:一棵有根树,每个节点都有一个value值和属性(zan或是 CANDLE)。你可以通过反转一些点的属性,反转一个点时候,它的整个子树都会被反转属性。有些点反转消耗代价为X,有些为Y。你的目标的是求zan和candle差的最大值。 思路:dp[i][0]代表zan比candle多的最大值,dp[ 阅读全文
posted @ 2016-03-29 15:07 yyblues 阅读(296) 评论(0) 推荐(0)
摘要:例如斐波那契数列用滚动数组优化 阅读全文
posted @ 2016-03-22 22:56 yyblues 阅读(413) 评论(0) 推荐(0)
摘要:题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费。(数据有问题,代码只是单调递增的情况) 阅读全文
posted @ 2016-03-22 22:28 yyblues 阅读(246) 评论(0) 推荐(0)
摘要:题意:奶牛Bessie在0~N时间段产奶。农夫约翰有M个时间段可以挤奶,时间段f,t内Bessie能挤到的牛奶量e。奶牛产奶后需要休息R小时才能继续下一次产奶,求Bessie最大的挤奶量。 详见代码 阅读全文
posted @ 2016-03-21 15:40 yyblues 阅读(278) 评论(0) 推荐(0)
摘要:题意:找元素关于对角线左或右对称的最大矩阵 思路:左右对角线只需要遍历一条就可以了。只要当前点往上遍历和往后遍历一样就可以。 阅读全文
posted @ 2016-03-20 00:05 yyblues 阅读(235) 评论(0) 推荐(0)
摘要:详见代码 阅读全文
posted @ 2016-03-19 09:40 yyblues 阅读(178) 评论(0) 推荐(0)
摘要:详见代码 阅读全文
posted @ 2016-03-18 23:31 yyblues 阅读(247) 评论(0) 推荐(0)
摘要:最长公共自序列LIS 三种模板,但是邝斌写的好像这题过不了 N*N N*logn 没有AC 阅读全文
posted @ 2016-03-17 22:19 yyblues 阅读(175) 评论(0) 推荐(0)
摘要:思路:Jimmy 跳到一块板上后,可以有两种选择,向左走或向右走。走到左端和走到右端所需的时间,容易算出。 n如果我们能知道,以左端为起点到达地面的最短时间,和以右端为起点到达地面的最短时间,那么向左走还是向右走,就很容选择了。 阅读全文
posted @ 2016-03-17 18:11 yyblues 阅读(180) 评论(0) 推荐(0)
摘要:LCS 阅读全文
posted @ 2016-03-17 11:21 yyblues 阅读(246) 评论(0) 推荐(0)
摘要:题意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人 阅读全文
posted @ 2016-03-16 23:14 yyblues 阅读(564) 评论(0) 推荐(0)
摘要:题意:要求找到的体重递增,速度递减的老鼠,并且输出最长的长度数,而且输出各自的序列数。Special Judge 思路:先按体重由小到大排序,再找最长速度递减序列。 转移方程:mou[i].w>mou[j].w&&mou[i].s<mou[j].s&&dp[j]+1>dp[i] 阅读全文
posted @ 2016-03-16 14:32 yyblues 阅读(328) 评论(0) 推荐(0)