摘要: 点击打开链接 题意:有n个程序员,第i个程序员每行会有ai个bug,然后让你按着顺序安排程序员,问你有多少种安排方法,可以使得写m行的bug最多b个 思路: dp[i][j]表示写i行bug数有j个的方法数 转移方程和背包问题类似 最后扫一遍统计一下就好 代码: 阅读全文
posted @ 2017-02-20 12:39 _yxg123 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意: 一个评估蛋的硬度方法是测量蛋从多高摔下来会碎。现在佳佳想以楼层高度作为考量依据评估蛋的 硬度。如果蛋从i楼上掉下来会碎,而i-1不会,那么蛋的硬度为i。高为n层的实验楼里面有蛋卖,一个X元。佳佳开始没有蛋,并且他只能随身携带一个蛋, 不带蛋进楼需要Y元,带蛋需要Z元,做完试验之 阅读全文
posted @ 2017-02-20 01:34 _yxg123 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意: 给出一个无向图,现在把所有的点的人都交换,保证每个地方只有一个人,且任何人都不在自己原来的那个点上,问交换的过程中所有人走的最远的距离是多少; 思路: 首先分析一下,我们对每一个边进行分析,每个边的左边有n个节点,右边有m个节点,那么必然ans+=min(n,m)*边权 仔细想 阅读全文
posted @ 2017-02-19 23:16 _yxg123 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 就是寻找LIS 并打印出来 dp[i]表示到包括第i个数的前i个的最长递增的长度 从数列从后往前找就好了 ,如果从前往后,前面的大数会覆盖掉后面的小数,就不对了 代码: 阅读全文
posted @ 2017-02-19 21:39 _yxg123 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 第一种思路: 建立森林,dp[i][k]表示森林中在第i颗树中选k个的最大价值 , dp2[j]表示选j个的最大价值,对于每颗树,都更新一次。 转移方程: dp[u][j] = max(dp[u][j],dp[u][j-k]+dp[v][k]); dp2[j] = max(dp2[j] 阅读全文
posted @ 2017-02-19 00:42 _yxg123 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 概率dp 代码: 阅读全文
posted @ 2017-02-18 21:54 _yxg123 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意:n件物品切d刀分成d+1份,每份的和四舍五入,问总和最小。 思路:相当于有n-1个空,插d个板子,那么我们就可以DP解决他,dp[i][j]表示前i个空插了j个板子后的最小值 dp[i][j]表示前i个切了j刀得到的最小和(刀切在i后面或不切)。 转移: dp[i][j] = m 阅读全文
posted @ 2017-02-18 15:45 _yxg123 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意: 有n排花盆,每排有k个,然后有个人想扔m个花瓶,每个花瓶有个价值val 他只能选择每一排的最左边或者最右边扔 求扔的最大价值 思路: bag[i][j]表示第i排扔j个的最大价值, dp[i][j]表示前i排扔j个的最大价值,背包dp 转移:dp[i][j] = max(dp[ 阅读全文
posted @ 2017-02-18 13:26 _yxg123 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意: 计算一下排在队尾的两个人同时拿到一种票的概率是多少 思路:概率dp,dp[i][j]表示前i个人拿到j张A种票的概率 A和B都是一样的 所以答案乘2就好了 转移: dp[i][j] = dp[i-1][j-1]*0.5+dp[i-1][j]*0.5; 代码: 阅读全文
posted @ 2017-02-18 12:21 _yxg123 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 点击打开链接 题意:给定n个长度均为m的字符串,下面n行给出字符串,下面n*m的矩阵表示把对应的字母修改成其他字母的花费。 对于一个字符串,若它是easy to remembering 当 它存在一个字母,使得这个字母在这一列是独一无二的。 要使得n个字符串都是easy to remembering 阅读全文
posted @ 2017-02-18 00:57 _yxg123 阅读(119) 评论(0) 推荐(0) 编辑