摘要:
题目链接 题目大意:问使含有$p$个节点的子树分离至少需要去掉几条边。 设$f[i][j]$表示以$i$为根的子树保留$j$个节点所去掉的最少边数。 初始化$f[u][1]=c[u]$。$c[u]$是这个节点的度。 转移方程$f[u][j]=min(f[u][j],f[u][k]+f[v][j-k] 阅读全文
摘要:
题目链接 题目大意:求序列内长度在$[L,R]$范围内前$k$大子序列之和。 考略每个左端点$i$,合法的区间右端点在$[i+L,i+R]$内。 不妨暴力枚举所有左端点,找到以其为左端点满足条件的最大子序列。 用贪心的思想,这些序列一定是满足题意的。统计后将该序列删除。 但这样直接删除肯定会丢失一部 阅读全文
摘要:
单调队列是一种特殊的双端队列,其满足单调性,即内部元素单调递增或单调递减。单调队列可以用数组模拟,也可以用$STL$中的$deque$实现。 例题 最大子序和 给定一个长度为$N$的整数序列,从中找出一段长度不超过$M$的连续子序列,使得子序列中所有数的和最大。 $N,M\leq 3*10^5$。 阅读全文
摘要:
题目大意:在一个长度为$n$的环型序列中取出$m$个数使这$m$个数的和最大,且要求这$m$个数互不相邻。 考虑维护$nxt$和$lst$,即一个数的前驱和后继。如果此数被选中,那么$a[now]=a[lst]+a[nxt]-a[now]$并且更新前驱和后继,再将更新过后的数扔入堆中。 即反悔机制。 阅读全文
摘要:
题目大意:质数序列是指这个序列中任意两个数的和均为质数。先给出一个序列${a_{n}}$,从中取出元素构成最长质数序列,问其长度并输出序列。若长度相同则求和最大的序列。保证答案唯一。 小小的数学题。 1.偶数+偶数不是质数,奇数+奇数不是质数。但某些偶数+奇数($1$)是质数。所以这个序列中$1$是 阅读全文
摘要:
考虑三种情况: 1.从左端点开始,是否要跨越。 2.从右端点开始,是否要跨越。 3.从中间开始,向两边延伸。 代码: void pushup(int index) { tree[index].s=tree[index*2].s+tree[index*2+1].s; tree[index].ls=ma 阅读全文
摘要:
前言:一道状压DP的入门题(可惜我是个DP蒟蒻QAQ) 题意简述:求在一个$n*n$的棋盘中放$k$个国王的方案数。注:当在一个格子中放入国王后,以此格为中心的九宫格的其他八个格子将不能放置国王。 数据范围:$1\leq n\leq 9$,$1\leq k\leq n*n$。 看到数据范围,不是$d 阅读全文
摘要:
前言:背包学了无数遍,这次总算能记住点东西了QAQ 背包是线性DP中一类重要而特殊的模型。 0/1背包 给定$n$个物品,其中第$i$个物品的体积为$w_{i}$,价值为$c_{i}$。现在给你一个体积为$m$的背包,问怎样选择使得物品总价值最大? 我们先考虑朴素算法。 设$f[i][j]$为已经考 阅读全文
摘要:
前言:线性DP是DP中最基础的。趁着这次复习认真学一下,打好基础。 一·几点建议 1.明确状态的定义 比如:$f[i]$的意义是已经处理了前$i个元素,还是处理第$i$个元素?这对于后期的调试非常重要。 2.明确边界状态 比如:$f[0]$是等于$0$还是等于$1$又或是$f[0]=a[1]$?当然 阅读全文