摘要: 题目大意: n个人的关系为一棵树,有一个party,邀请了一个人,那么就不能邀请n的上级,求最多能邀请到多少人 思路: 树形dp 两个dp数组分别表示取n的时候的最大值和不取n的时候的最大值 如果取n,那么dp1[n]=它所有儿子的dp2之和 如果不取n,那么dp2[n]=它所有儿子的max(dp1 阅读全文
posted @ 2017-07-23 13:02 jack_yyc 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个矩阵,求矩阵中最长不下降子序列长度,只能四连块 思路: 记忆化搜索 对于每个块dfs,它的值就是四周比它小的块的最大值+1 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include 阅读全文
posted @ 2017-07-23 12:56 jack_yyc 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个数列an,求max(ap+...+aq + ai+...+aj)(p<=q<i<=j) 思路: dp 设两个dp数组,分别表示1-i的最大子段和,i-n的最大子段和,最后枚举i可得答案 在求这两个dp数组时,先让它们表示已i为结尾的左右侧最大子段和 然后dp[i]=max(dp[i- 阅读全文
posted @ 2017-07-23 12:48 jack_yyc 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有一些集合,求每个集合是多少个集合的真子集 思路: 树状数组 先按照右端点从大到小排序,这样只要考虑之前比它左端点小的出现过几次就可以了 模板题 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> 阅读全文
posted @ 2017-07-23 08:48 jack_yyc 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一些点的坐标,定义一个点的值为在该点左下方(可以在水平左侧或竖直下方)的所有点的数量之和。 思路: 树状数组 因为题目按照y坐标升序排列,用一个树状数组,记录每个x出现的次数 模板题 #include<iostream> #include<cstdio> #include<cmath> 阅读全文
posted @ 2017-07-23 08:41 jack_yyc 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个序列,从这个数列里取任意个数,添加到新的数列里。 对于这个新序列,ans-奇数位的值,+偶数位的值 求最后ans最大值 思路: dp 求对于原数列中的每个数,是奇数不取、奇数取、偶数取、偶数不取的情况分别计算 最后对于最后一个数对四种情况取一下max #include<iostrea 阅读全文
posted @ 2017-07-22 17:17 jack_yyc 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有很多物品要卖,每种物品都有自己的价值和截止日期,每个物品都必须在截止日期前卖出去,每天只能卖一件东西 求最后获得的最大价值和是多少 思路: 优先队列 按照截止日期由大到小排序,从最大截止日期开始,一天天向前推直到1 如果某天是一个东西的截止日期,就把这件东西的价值加到优先队列里,每天都 阅读全文
posted @ 2017-07-22 17:10 jack_yyc 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一些树枝,每个树枝有长度和重量,如果下一次加工的树枝长度和重量都不小于当前树枝,那么下一次加工不消耗,反之,下一次加工消耗为1 求如何排序才能使加工完这些树枝的消耗最小,求最小消耗 思路: dp+排序 按照长度从小到大排序,然后看在该序列下,重量有多少个不下降子序列,不下降子序列的个数就 阅读全文
posted @ 2017-07-22 16:53 jack_yyc 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个三角形木板,竖直立放,上面钉着n(n+1)/2颗钉子,还有(n+1)个格子(当n=5时如图1)。每颗钉子和周围的钉子的距离都等于d,每个格子的宽度也都等于d,且除了最左端和最右端的格子外每个格子都正对着最下面一排钉子的间隙。 让一个直径略小于d的小球中心正对着最上面的钉子在板上自由滚 阅读全文
posted @ 2017-07-22 16:39 jack_yyc 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 有一块木板,要把这块木板分成n块,已知每块的长度,每次切木板的花费就是这块模板的长度 现在求把木板切成规定要求的最小花费是多少 思路: 贪心+优先队列 先把n个小木板的长度都加到优先队列里,然后每次取最小的两个,把他们两个加起来加到优先队列里,然后把他们两个的和加到ans里 最后只剩一个 阅读全文
posted @ 2017-07-21 12:17 jack_yyc 阅读(108) 评论(0) 推荐(0) 编辑