摘要:
题目大意: n个人的关系为一棵树,有一个party,邀请了一个人,那么就不能邀请n的上级,求最多能邀请到多少人 思路: 树形dp 两个dp数组分别表示取n的时候的最大值和不取n的时候的最大值 如果取n,那么dp1[n]=它所有儿子的dp2之和 如果不取n,那么dp2[n]=它所有儿子的max(dp1 阅读全文
摘要:
题目大意: 一个矩阵,求矩阵中最长不下降子序列长度,只能四连块 思路: 记忆化搜索 对于每个块dfs,它的值就是四周比它小的块的最大值+1 #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include 阅读全文
摘要:
题目大意: 一个数列an,求max(ap+...+aq + ai+...+aj)(p<=q<i<=j) 思路: dp 设两个dp数组,分别表示1-i的最大子段和,i-n的最大子段和,最后枚举i可得答案 在求这两个dp数组时,先让它们表示已i为结尾的左右侧最大子段和 然后dp[i]=max(dp[i- 阅读全文
摘要:
题目大意: 有一些集合,求每个集合是多少个集合的真子集 思路: 树状数组 先按照右端点从大到小排序,这样只要考虑之前比它左端点小的出现过几次就可以了 模板题 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> 阅读全文
摘要:
题目大意:给定一些点的坐标,定义一个点的值为在该点左下方(可以在水平左侧或竖直下方)的所有点的数量之和。 思路: 树状数组 因为题目按照y坐标升序排列,用一个树状数组,记录每个x出现的次数 模板题 #include<iostream> #include<cstdio> #include<cmath> 阅读全文