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\). 首先每个数肯 ...
随机推荐
- iOS组件化实现方案
作者原文iOS组件化 - 路由架构从0到1实战 合伙呀 1.CTMediator作为路由中间件 2.基础UI组件以pod形式引入,并且能够独立运行调试 3.基础工具组件以pod形式引入,并且能够独立 ...
- 用 ubuntu 自带的 gome-screenshot 来实现类似QQ截图那样的功能,同时设置键盘快捷键
在window下习惯了使用ctrl+Alt+A截图,在linux还真有点不习惯,所以下面介绍一下替代的用法. 打开 ubuntu 的系统设置-->键盘-->快捷键:界面如下: 01 添加一 ...
- Spring-Boot-操作-Redis,三种方案全解析!
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...
- CocosCreator 2.1.2 Shader组件
本篇文章相关导读: 新版ShaderHelper,支持 Creator 2.1.2 ! 社区大佬揭开 Creator 2.1.2 材质系统的神秘面纱! 为什么要选择使用TypeScript,看了就知道 ...
- USE11 上oracle11导入数据中文乱码
分类专栏: 数据库 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/suqimm/artic ...
- SQL索引管理器 - 用于SQL Server和Azure上的索引维护的免费GUI工具
我作为SQL Server DBA工作了8年多,管理和优化服务器的性能.在我的空闲时间,我想为宇宙和我的同事做一些有用的事情.这就是我们最终为SQL Server和Azure 提供免费索引维护工具的方 ...
- 在IIS下发布.Net Core MVC项目
1. 默认你已经安装了IIS,并且创建了一个.Net Core 项目 2. 发布.NET Core项目 在vs中右键点击MVC项目,点击"发布"按钮,选择"文件系统&qu ...
- 活动任务出现bug
之前做的一个活动任务发现一个bug,是以前和离职同事一起对逻辑的时候没有考虑到的,配置活动的时候应该要先查询下,如果这个产品线上在这段时间已经配置了并且上线了,则不能在做活动处理了,否则就和前面的活动 ...
- 7.vertical-align属性
本节学习目标: 图片.表单和旁边的文字对齐 解决图片底部默认空白缝隙问题 1.图片.表单和旁边的文字对齐 默认的图片.表单等行内元素或行内快元素是和文字的基线对齐的,但在实际情况下,我们想让他们中间对 ...
- js 实现watch监听数据变化
1.js /** * @desc 属性改变监听,属性被set时出发watch的方法,类似vue的watch * @author Jason * @study https://www.jianshu.c ...