摘要:
题目大概说一个平面上分布n个灰尘,现在要用一个宽w的刷子清理灰尘:选择一个起点,往水平线上扫过去这个水平线上的灰尘就消失了。问最多进行k次这样的操作能清理最多多少灰尘。 没什么的DP。 先按垂直坐标给灰尘们排个序, 然后d[i][k]表示前i个灰尘中,进行到第k次清理操作时刷子底部在第i个灰尘的竖坐 阅读全文
摘要:
题目大概说给n个二元组Ai和Bi,要去掉k个,求余下的100*∑Ai/∑Bi的最大值。 假设要的最大的值是ans,令Di=Ai-ans*∑Bi,对Di排序取最大的n-k个,如果∑Ai-ans*∑Bi>0,说明ans还可以更大,反之ans太大了,所以二分枚举一下ans判断即可。 阅读全文
摘要:
题目大概就是要,给一个由若干区间[Si,Ti]组成的序列,求最小长度的子序列,使这个子序列覆盖1到n这n个点。 dp[i]表示从第0个到第i个区间且使用第i个区间,覆盖1到Ti所需的最少长度 对于Si=1的i区间dp值就是1了,要求的答案就是所有Ti=n的最小的dp值 转移就是,dp[i]=dp[j 阅读全文
摘要:
题目大概求一棵树中大小为k的子树的最大权和。 dp[u][k]表示以u为根的子树中包含u结点的大小为k的子树的最大权和,然后树上背包转移转移很容易。。 阅读全文
摘要:
题目大概要求从起点到终点恰好经过k条边的最短路。 离散数学告诉我们邻接矩阵的k次幂就能得出恰好经过k条路的信息,比如POJ2778。 这题也一样,矩阵的幂运算定义成min,而min满足结合律,所以可以用快速幂求解。 另外这题点的序号要离散化一下,最多也就200个点。 阅读全文
摘要:
题目大概说,一辆带有一个容量有限的油箱的车子在一张图上行驶,每行驶一单位长度消耗一单位油,图上的每个点都可以加油,不过都有各自的单位费用,问从起点驾驶到终点的最少花费是多少? 这题自然想到图上DP,通过最短路来转移方程: dp[u][c]表示当前在u点油箱还有c单位油时的最少花费 不过,我T得好惨, 阅读全文
摘要:
题目大概说给一棵树,每次询问三个点,问要把三个点连在一起的最少边权和是多少。 分几种情况。。三个点LCA都相同,三个点有两对的LCA是某一点,三个点有两对的LCA各不相同。。。%……¥…… 画画图可以发现。。虽然好像不太严谨。。连接(a,b,c)三个点的最短边权和=(dist(a,b)+dist(b 阅读全文
摘要:
题目大概说给一个递增序列,询问区间出现最多的数。 用莫队算法比较直观,虽然应该会T。。好像也可以主席树。。不过题目给的序列是有序的,因而相同的数会聚在一起。 考虑把序列分成一段一段,使每段都包含极大的相同的数字 这样对于每一个区间查询: 可能这个区间左边或右边没有包含完整的一段,而其长度在段里对左或 阅读全文
摘要:
题目大概说要用m个工厂生产n个玩具,第i个玩具在第j个工厂生产要Zij的时间,一个工厂同一时间只能生成一个玩具,问最少的用时。 这题建的图不是很直观。。 源点向玩具连容量1费用0的边 将每个工厂拆成n个点,向汇点连容量1费用0的边 第i个玩具向第j个工厂拆的第k个点连容量1费用k*Zij的边 如此跑 阅读全文
摘要:
题目大概要先求一张边有权的图的根为1的最短路径树,要满足根到各点路径序列的字典序最小;然后求这棵最短路径树包含k个结点的最长路径的长度和个数。 首先先构造出这棵字典序最小的最短路径树。。好吧,我太傻逼了,不会。。保证邻接表存储邻接点有序的前提下,就能按字典序DFS一遍,在O(N+E)的时间复杂度上构 阅读全文
摘要:
题目大概说给一张点和边都有权的图,现在要求其一棵以1结点为根的生成树使树的边权和最小,树边权 = 对应的图边权 * 树边末端点为根的子树所有结点对于图顶点的点权和。 要求∑(边权*子树点权和),等价于求∑(点权*点到根路径上的边权和)。 而如果在图中各个点到根都存在最短路,那么最短路的边一定能构造出 阅读全文
摘要:
题目大概说一棵边有方向的树,q个询问,每次询问结点u是否能走到v。 倍增LCA搞即可: 除了par[k][u]表示u结点往上走2k步到达的结点, 再加上upp[k][u]表示u结点往上走2k步经过边的状态:-1表示边都是向下,1表示都是向上,0混合。 这样u、v都往LCA上走就能知道u是否能走到v了 阅读全文
摘要:
题目大概说一棵n结点二叉苹果树,n-1个分支,每个分支各有苹果,1是根,要删掉若干个分支,保留q个分支,问最多能保留几个苹果。 挺简单的树形DP,因为是二叉树,都不需要树上背包什么的。 dp[u][k]表示以u结点为根的子树保留k个分支最多能有的苹果数 转移就是左子树若干个,右子树若干个转移。。 阅读全文
摘要:
。。和HDU3870类似。。注意n=1和m=1的情况。 阅读全文
摘要:
题目大概说给一棵树,树的边一开始都是损坏的,要修复一些边,修复完后要满足各个点到根的路径上最多只有一条坏的边,现在以各个点为根分别求出修复边的方案数,其结果模1000000007。 不难联想到这题和HDU2196是一种类型的树形DP,因为它们都要分别求各个点的答案。然后解法也不难想: dp0[u]表 阅读全文