随笔分类 - 动态规划
摘要:题目大意: 给树上每一个结点赋值(值为正整数),要求相邻结点的权值不能相同。问树上最小权值和。$n\leq 10000$。 设$f[i][j]$表示以$i$为根的子树,根权值为$j$时子树的最小权值和。 朴素的$DP$是$n^3$的。这里我们有个结论:树上用到的颜色不超过$\log_{2} n$个。
阅读全文
摘要:前言:寒假讲过树形DP,这次再复习一下。 基本的树形DP 实现形式 树形DP的主要实现形式是$dfs$。这是因为树的特殊结构决定的——只有确定了儿子,才能决定父亲。划分阶段的话一般是$f[i][j][0/1]$。$i$表示以$i$为根的子树,$j$一般表示保留$j$个子节点,$0/1$表示选/不选这
阅读全文
摘要:题目链接 题目大意:问使含有$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]
阅读全文
摘要:单调队列是一种特殊的双端队列,其满足单调性,即内部元素单调递增或单调递减。单调队列可以用数组模拟,也可以用$STL$中的$deque$实现。 例题 最大子序和 给定一个长度为$N$的整数序列,从中找出一段长度不超过$M$的连续子序列,使得子序列中所有数的和最大。 $N,M\leq 3*10^5$。
阅读全文
摘要:前言:一道状压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]$?当然
阅读全文
摘要:前言:考试挂了很多分,难受…… T1:防御 题意简述:给一条长度为$n$的序列,第$i$个数的值为$a[i]$。现让你将序列分成$m$段,且让和最小的一段尽可能得大。求这个最大值。 题意很明显,最小值最大。不难想到二分答案,为节约时间我们在$(minn,sum)$这个区间内维护。考虑用前缀和维护$s
阅读全文
摘要:前言:本人是个DP蒟蒻,一直以来都特别害怕DP,终于鼓起勇气做了几道DP题,发现也没想象中的那么难?(又要被DP大神吊打了呜呜呜。 首先,区间DP是什么? 区间DP是一种以区间长度为阶段的DP方法。这种DP的解法较为固定,一般都是先枚举区间长度,再枚举左端点,根据左端点+长度推出右端点,然后枚举中间
阅读全文
摘要:前言:T3写挂了,有点难受。 T1 中位数 题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$。 其实正解是用两个堆分别为大根堆和小根堆。但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好 Code: #incl
阅读全文
摘要:这次好不容易AK了一次(虽然题有点白给。有的题还是比较考验思路的。 T1 放棋子 给一个n*n的棋盘,有n个棋子。棋盘的副对角线不能放棋子(即$i+j=n+1$的位置)。每行每列只能摆一个棋子。每个棋子都视为是不同的。问有多少种摆法。 $n\leq 1314520$。答案对1e8+7取模。 典型的错
阅读全文
摘要:题目描述 在有向无环图上给你两个起点和终点分别为$a,b,c,d$。问有几种路径方案使得能从$a$走到$b$的同时能从$c$走到$d$,且两个路径没有交点。 $1\leq n\leq 200,1\leq m\leq 5000$。 经过了深刻地思考,你会发现,由于这是一个$DAG$图,我们可以将其转化
阅读全文

浙公网安备 33010602011771号