ZROI 暑期高端峰会 A班 Day6 DP
[THUPC2018]城市地铁规划
(日常讲题之前 YY……)
一眼出 \(O(n^3+nk)\) 做法。
\(dp[i][j]\) 表示前 \(i\) 个点,前 \(i\) 个点度数和为 \(j\) 的最小值。
\[dp[i][j]=\min\limits_{1\le k\le n-1}(dp[i-1][j-k]+f(k))\]
答案是 \(dp[n][2n-2]\)。
我把它优化到了 \(O(n^2\sqrt{n})\),然后就自闭了。
(讲题之后……)
换成 prufer 序列,也就是前 \(i\) 个点,度数-1的和为 \(j\) 的最小值。
\[dp[i][j]=\min\limits_{0\le k\le n-2}(dp[i-1][j-k]+f(k+1))\]
答案是 \(dp[n][n-2]\)。
这有什么好处?发现此时枚举过程中 \(k\) 的上界没有用了。
那么继续修改状态,如果一开始先假设所有点的度数都是 \(1\),接下来考虑替换成别的度数:
\[dp[i][j]=\min\limits_{k\ge 0}(dp[i-1][j-k]+f(k+1)-f(1))\]
选不超过 \(n\) 个正整数,使得和为 \(n-2\) 且 \(f(x_i)-f(1)\) 的和最大。
此时就是个完全背包。做完之后再还原方案就行了。
复杂度 \(O(n^2)\)。
[CTSC2018]假面
之前听懂了,然而当时没来得及写,现在就忘了。
回去再补。
CF53E
给 \(n\) 个点的图,问有多少生成树,恰好有 \(k\) 个叶子。
\(n\le 10\)。但是可以开到 \(n\le 15\)。
(日常讲题之前YY)
明显 DP。
\(f[S][i]\) 表示目前在生成树中填了 \(S\),目前有 \(i\) 个叶子,的方案数。
那么 \(f[\{i\}][1]=1\)。
转移,一层一层填。复杂度 \(O(3^nn^3)\)。
然而要是 \(n\le 15\) 就挂了。
(讲题之后)
容斥,计算某个集合全是叶子,且没有其它叶子的方案数,转为求某个集合全是叶子,但是可以有其它叶子的方案数。
枚举集合,剩下的求个生成树,然后把叶子挂上去。这里复杂度 \(O(2^nn^3)\)。
然后 IFMT 一波就没了。
[NOI2015]寿司晚宴
等价于两人的质因子集合没有交集。
朴素 DP:\(f[i][S_1][S_2]\) 表示前 \(i\) 个人,第一个人集合为 \(S_1\),第二个人集合为 \(S_2\) 方案数。
转移直接枚举给哪个人或不给。可以通过 \(n\le 30\)。
\(n\le 500\) 时质因子太多了。但是发现一个性质:每个数至多有一个 \(>22\) 的质因子。
把 \(2\) 到 \(n\) 的数按大质因子分类。(没有大质因子的,看成一类。)
然后转移时强制一类的数不会同时给两个人就行了。
???
\(n\times m\) 的矩阵,每个矩阵有个权值。
选一些位置,使得它们没有八联通。使得它们权值和最大。
\(n\le 12,m\le 100\)。
有个显然的:\(f[i][S]\) 表示填了前 \(i\) 列,第 \(i\) 列选的状态是 \(S\),最大值。
可用状态远小于 \(2^n\)。复杂度一副能过的样子。
不过有个可以稳过的方法:插头 DP。(其实这个不是插头 DP,是个普通轮廓线 DP)。
然后就是 SB 题了。
[清华集训2016] Alice 和 Bob 又在玩游戏
\(n\) 个点的有根森林,两个人轮流选一个点,并将这个点和它的所有祖先删掉。
不能操作者输,问谁会赢。
\(T\le 10,n\le 10^5\)
(日常讲题之前YY……)
发现每次操作后保留的一定是一些子树。
\(f[u]\) 表示以 \(u\) 为根的子树中的 SG 值。
再令 \(g[u]\) 表示 \(f[u]\) 和其所有儿子的 \(f\) 的异或和。
那么发现删掉一条链,之后的异或和就是这条链上所有 \(g\) 的异或和。
然后考虑对于一个点的所有儿子,弄个启发式合并。
问题就变成要有一个数据结构支持插入一个数,全局异或一个数,全局 \(\mathrm{mex}\)。
就是一个 01 Trie。
时间复杂度两个 \(\log\)。
(讲题之后……)
我tm……切了???
不过 Trie 合并可以不用启发式,就一个 \(\log\) 了。我好菜啊……
???
平面上 \(2n\) 个球。
有 \(2n\) 个机器人,位于 \((0,1)\) 到 \((0,n)\) 和 \((1,0)\) 到 \((n,0)\)。
每次激活一个机器人,会拿走和它坐标轴垂直方向上最近的球。
问有多少种顺序可以拿走全部的球。
\(n\le 10^5\)。
建 \(2n\) 个点,表示每一行和每一列。
对于一个球 \((x,y)\),就从 \(x\) 向 \(y\) 连边,边权 \(x+y\)。
激活一个机器人就相当于选择与这个点相邻的所有边中边权最小的删掉。
对于每个连通块考虑。首先肯定要点数和边数相等。
所以是个基环树。问题就是要把这个基环树,每条边定向,使得每个点出度都为 \(1\)。
对于环上有两种,顺时针和逆时针。枚举。剩下的点,我们已经知道要用它来删哪条边了。
诶等等,每种方案是还有个系数吧?
嗯,没毛病,\(f[u]\) 表示 \(u\) 的子树中的方案数。
那么对于所有 \(u\) 和它一个儿子相连的边,如果比 \(u\) 和它父亲相连的边边权小,那么肯定是要先选的。否则随便。
那么 \(f[u]\) 就是 \(\prod f[v]\) 再乘上个组合数之类的东西。
时间复杂度 \(O(n)\)。
[清华集训2016]连通子树
老师咕了。
[十二省联测2019]希望
老师咕了。
AGC007D
发现路径一定是喂一堆熊,然后走一段后走回去把前面没拿的金币都拿了(不会剩下一些不捡),然后再回去,重复。
那么设 \(f[i]\) 表示前 \(i\) 个金币都捡了并且走到了 \(i\) 的最短时间。
\[f[i]=\min\limits_{j<i}(f_j+(a_i-a_j)+\max(2(a_i-a_{j+1}),T))\]
按后面的 \(\max\) 分类拆开,然后变成一些区间求最小值的东西。单调队列优化。(草我是个 SB 还用线段树……)
时间复杂度 \(O(n)\)。
[POI2011] Lightening Conductor
做过。没了。
LOJ 566
先枚举 \(\mu\)(中位数),把每条边拆成两条边,\(a_i-\mu\) 和 \(\mu-a_i\)。可以变为 \(a_i\) 和 \(2\mu-a_i\)。
问题变成给这样一个图,要求包含 \(\lfloor\frac{n-1}{2}\rfloor\) 条第一种边,\(\lceil\frac{n-1}{2}\rceil\) 条第二种边,的最大生成树。
可以 WQS 二分。\(O(m^2\log^2m)\)。
咕了。
LOJ 565
首先发现,答案就是(整个过程中一共有多少次进位 - 最后的串中的 1 的个数)的期望。因为一次进位肯定是把两个 1 变成了一个 1。所以答案和操作顺序无关。
从低位到高位考虑。\(f[i][j]\) 表示考虑前 \(i\) 位,\(i\) 这一位一共被加了 \(j\) 次。
\(f[i-1][j]\) 可以贡献到 \(f[i][\lfloor\frac{j}{2}\rfloor]\)。
\(pf[i][j]\) 可以贡献到 \(f[i][j+1]\)。
\((1-p)f[i][j]\) 可以贡献到 \(f[i][j]\)。
(蛤?)
咕了。
ZROI 暑期高端峰会 A班 Day6 DP的更多相关文章
- ZROI 暑期高端峰会 A班 Day6 离线问题
FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...
- ZROI 暑期高端峰会 A班 Day2 线性代数
高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...
- ZROI 暑期高端峰会 A班 Day3 图论
最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...
- ZROI 暑期高端峰会 A班 Day4 生成函数
一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...
- ZROI 暑期高端峰会 A班 Day4 树上数据结构
FBI Warning:本文含有大量人类的本质之一. 你经历过绝望吗? [ZJOI2007]捉迷藏 询问树上最远黑点对. 动态边分治可以比点分治少一个 \(\log\). bzoj3730 咕了. [ ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- ZROI 暑期高端峰会 A班 Day1 序列数据结构
FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...
- ZROI 暑期高端峰会 A班 Day3 字符串
FBI Warning:本文含有大量人类的本质之一 后缀树 反正后缀树就是反串的后缀自动机的 Parent 树,就不管了. 然而 SAM 也忘了 好的假装自己会吧--dls 后缀自动机 大概记得,不管 ...
- ZROI 暑期高端峰会 A班 Day5 杂题选讲
CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯 ...
随机推荐
- Java学习清单
转自: csdn/zuochao_2013/article/details/76795164 · Java基础部分 *Java基础才是重中之重,只有基础打牢了,学习各种框架才能游刃有余. 1, ...
- Ansible17:Playbook之tags
目录 简介 为task打tag 使用tag 执行指定tag的task 排除指定tag的task 查看playbook中的所有tag 打tag的几种方式 ansible内置tag 简介 在大型项目当中, ...
- Linux内核之vmlinuz反汇编
本文介绍在Fedora上对Linux内核的vmlinuz进行反汇编.如果内核是debug版本,可以用来查看某个函数的源代码. 1. 安装kernel-devel软件包 dnf -y install k ...
- ASP.NET Core 3.0 WebApi 系列【2】.Net Core 3.0+ CodeFirst + MySql 实现数据的迁移
写在前面 在前一小节中,我们创建了基于RESFULL风格的服务.这个小节,尝试使用CodeFirst+MySql 的方式实现数据迁移. 一.开发环境 [1]运行环境:win10 家庭版 [2]开发工具 ...
- RookeyFrame2.0发布,UI重构
RookeyFrame2.0在原来1.0的基础上进行了UI的重构,设计了扁平化的样式风格,看起来更清爽,更赏心阅目,由于之前工作比较忙升级比较慢,后续会投入比较多时间来更新维护,同时针对二次开发项目做 ...
- Markdown温故知新(1):Markdown面面观
1.什么是 Markdown? 2.有哪些人在用 Markdown? 3.用 Markdown 的优势是什么? 4.Markdown 的语法标准简介 5.怎么用 Markdown? 6.如何选择 Ma ...
- 北理工机器人队RM视觉组学习参考汇总(持续更新中)
欢迎大家有意加入北理工机器人队参与到视觉组的工作中.在大家能够正式作为队员参与到视觉组的准备工作之前,北理机器人队需要对各位进行培训.这篇文章主要面向有志于参加机器人队视觉组的同学.同时,欢迎所有对相 ...
- [快捷键的使用] IntelliJ IDEA 将数据库里面的表转化为对象
本文讲述IntelliJ IDEA 多行编辑快捷键的使用,希望能帮到新人提高效率. 注意:在笔记本键盘上操作的方法. 数据库连接工具使用SQLyog 第一步: 从数据里面将文本拷贝到User类里面. ...
- Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- springMVC对RESTful的支持
1:后台controller方法编写 @RequestMapping("/itemsLook/{id}") public ItemsCustom itemsLook(@PathVa ...