[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的更多相关文章

  1. ZROI 暑期高端峰会 A班 Day6 离线问题

    FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...

  2. ZROI 暑期高端峰会 A班 Day2 线性代数

    高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...

  3. ZROI 暑期高端峰会 A班 Day3 图论

    最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...

  4. ZROI 暑期高端峰会 A班 Day4 生成函数

    一般生成函数 很普及组,不讲了 生成函数是一种形式幂级数,也就是我们只关心系数,不关心未知数具体的值. 比如 \(\sum\limits_{i\ge 0}x^i=\frac{1}{1-x}\).虽然只 ...

  5. ZROI 暑期高端峰会 A班 Day4 树上数据结构

    FBI Warning:本文含有大量人类的本质之一. 你经历过绝望吗? [ZJOI2007]捉迷藏 询问树上最远黑点对. 动态边分治可以比点分治少一个 \(\log\). bzoj3730 咕了. [ ...

  6. ZROI 暑期高端峰会 A班 Day1 组合计数

    AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...

  7. ZROI 暑期高端峰会 A班 Day1 序列数据结构

    FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...

  8. ZROI 暑期高端峰会 A班 Day3 字符串

    FBI Warning:本文含有大量人类的本质之一 后缀树 反正后缀树就是反串的后缀自动机的 Parent 树,就不管了. 然而 SAM 也忘了 好的假装自己会吧--dls 后缀自动机 大概记得,不管 ...

  9. ZROI 暑期高端峰会 A班 Day5 杂题选讲

    CF469E \(n\) 个需要表示的数,请使用最少的 \(2^k\) 或 \(-2^k\) 表示出所有需要表示的数.输出方案. \(n\le 10^5,|a_i|\le 10^5\). 首先每个数肯 ...

随机推荐

  1. c++小学期大作业攻略(二)整体思路+主界面

    写在前面:如果我曾经说过要在第一周之内写完大作业,那……肯定是你听错了.不过如果我在写的时候有攻略看的话应该可以轻松地在4~5天内做完,然后觉得写攻略的人是个小天使吧(疯狂暗示).出于给大家自由发挥的 ...

  2. 遇到 npm WARN npm npm does not support Node.js vx.x.x的解决办法

    遇到如下警告 PS C:\Users\Administrator> npm npm WARN npm npm does not support Node.js v9.11.2 npm WARN ...

  3. Task 小记

    1. 注意 Task 执行的顺序. 如下代码: IQueryable<T> querySet; if (preConditionExpression == null) { querySet ...

  4. LearnOpenGL笔记(2)三角形

    这是学习LearnOpenGL CN教程的笔记,包括我遇到的问题和我的烂笔头.文章名与网站小节对应. ------------------------------------分割线---------- ...

  5. Dubbo(一):dubbo-spring-boot-starter

    dubbo-spring-boot-starter English Dubbo Spring Boot Starter.也可以关注dubbo官方的dubbo-spring-boot-project 支 ...

  6. elasticsearch原理学习

    用es也差不多一年左右了,但是都是只会用,底层做了什么一窍不通,没有核心竞争力,循序渐进,一个一个攻破,理解的多了,读的多了,自然能力就上去了,es底层是基于lucene的,所以今天先从lucene下 ...

  7. Delphi中窗体的事件

    Delphi中窗体的事件 Form窗体可以响应各种各样的时间,在Object Inspector的Events页面中罗列了一大堆,如下图: 下面将要列出一些常用的事件. 1.OnActivate 当窗 ...

  8. 记录下vue keep-alive IOS下无法保存滚动scroll位置的问题

    最近 做的项目,遇到了一点小麻烦,就是我一个页面A页面是加载 列表数据 ,B页面是展示详细信息的.A进去B时,缓存A页面. 效果 做出来 后,缓存是缓存数据 了,但是当我A页面的列表数据 好多,要滚动 ...

  9. javascript:void(0); 和 href = "#"

    在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#", 但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面 ...

  10. Python3的map/reduce

    Python内建了map()和reduce()函数. 原文在这里MapReduce: Simplified Data Processing on Large Clusters,map/reduce的概 ...