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\). 首先每个数肯 ...
随机推荐
- 浙大版《C语言程序设计(第3版)》题目集 --总结
浙大版<C语言程序设计(第3版)>题目集 此篇博客意义为总结pta上浙大版<C语言程序设计(第3版)>题目集所做题目的错误点,心得体会. 1.练习2-10 计算分段函数[1] ...
- axios源码入口以及公用方法
axios学习笔记(公用方法) 源码地址 找到入口文件 axios/lib/axios.js var utils = require('./utils'); var bind = require('. ...
- UVA 583 分解质因数
Webster defines prime as:prime (prim) n. [ME, fr. MF, fem. of prin first, L primus; akin to L prior] ...
- MarkDown的一些基本语法
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人用它写 ...
- Redis(序)应用场景
前言 在阅读了<大型网站技术架构:核心原理与案例分析>书后,稍微了解了Redis在大型网站架构中的应用场景和目的. 大型网站都是从小用户量,小流量的网站演变过来的,在小型网站的架构之初,L ...
- iviewUI 前端静态页面实现增删改查分页
完整代码部分 (仅供参考哈): <template> <div> <label prop="name"> 姓名: </label> ...
- oracle 获取表\视图的列名
select COLUMN_NAME FROM user_col_comments WHERE TABLE_NAME='视图名' select COLUMN_NAME from all_tab_c ...
- 微服务架构 ------ Ubuntu下Docker的安装
1.准备一个全新的Ubuntu环境 2.准备安装Docker及其依赖 apt-get update 更新数据源 apt-get -y install apt-transport-https ca-ce ...
- java自适应响应式 企业网站源码 SSM 生成静态化 手机 平板 PC
java 企业网站源码 前后台都有 静态模版引擎, 代码生成器大大提高开发效率 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成ht ...
- ObjC: Foundation Kit
转自:http://marshal.easymorse.com/tech/objc-foundation-kit Foundation Kit是什么? 你可以把它看作Java JDK中的java.la ...