自闭集训 Day7

动态规划

LOJ6395

首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可。

然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数的最小值,然后就获得了\(O(n^3)\)的DP。

不妨每个点的度数都减1,那么总度数就变成\(n-2\)了。

考虑原来\(i\)的作用是什么:要限制选的点数不能超过\(n​\)。

此时我们总度数小于\(n\),所以只要度数不为0的点的总度数不超过n-2那么就肯定有点数不超过n。所以我们可以先认为所有点贡献的都是\(f(1)\),然后如果选的是\(k,k\ne 1\)那么就把贡献设为\(f(k)-f(1)\)。

于是就可以直接设\(f_i\)表示当前度数之和为\(i\)的最大贡献,然后做一个完全背包即可。

LOJ2552

设\(f_{i,j}​\)表示\(i​\)当前还剩\(j​\)血的概率,那么锁定技能就相当于一次转移。

那么最后的询问就没了,非常简单。

那么每一次询问呢?我们关注的只是第\(i​\)个人存活的概率,设为\(p_i​\)。

那么每个人被命中的概率呢?设\(g_j​\)表示除了自己以外还有\(j​\)个人存活的概率,发现就是个背包,直接硬上分治FFT可以得到70分。

当然,我们可以先把一整个背包算出来再退掉当前物品,就\(O(Cn^2)​\)了。

CF53E

容斥,求至少\(k​\)个叶子的方案数。

枚举叶子集合,用剩下的点组生成树,然后把叶子挂回去,复杂度\(O(2^nn^3)​\)。

然后用FMT优化容斥,没了。

UOJ129

发现满足\(x^2\le 500​\)的质数只有8个。

于是每个数只会有这几个质数和另一个大质数作为因子。

把所有数按大质数排序,然后连续一段就必须放在同一个集合(或者不选)。

然后设\(f_{i,S,T}\)表示前\(i\)个,\(S,T\)里面分别有哪些质数,乱DP即可。

某题

选一些位置,使得这些位置不相邻。相邻定义为八连通。

题解是插头DP。

(没怎么听清题,但大概不难)

UOJ266

发现删掉一条链之后必然会变成几个子树,于是可以设\(f_x\)表示\(x\)子树的sg函数值,然后暴力枚举删子树内哪个点,就获得了多项式时间的算法,应该是\(O(n^2)\)的。

如何优化?

设\(g_x\)表示\(x\)以及自己儿子的\(f\)的异或值,然后发现删掉一条链就是这条链的\(g\)的异或值再异或掉根的。(大概意思就是这个,可能表述得不是很清晰)

于是对子树内维护一个字典树支持插入、全局异或、求mex、合并,就没了。

NTF随手切掉了清华集训题目,NTF进清华了,NTFAKIOI!!!!

某题

平面上\(2n\)个球(球的位置两两不同),有\(2n\)个机器人位于\((0,i),(i,0)\),每次激活一个机器人拿走它坐标轴垂直方向上最近的球,问有多少个方法拿走所有球。

把每一行、每一列视作一个点,一个球作为一条边,边权为\(x+y\),那么激活第\(i\)行的点的时候就会取走与他连在一起的边权最小的边,列同理。

所以可以知道每个连通块点数等于边数,也就是一个基环二向树。每个点要恰好选一条边,并且选边的方法受上面的限制,然后求这样选边的顺序的个数。

树上每个点选的边是确定的(自己到父亲的那条边),但环上有两种情况,所以先枚举是哪种情况,然后每个点要选的边就确定了。

在树上,看儿子要选的边与自己要选的边的边权大小关系,如果比自己的小那么就必须先选,这样一路DP上去。

在环上,看自己左右两条边的大小关系,如果自己要选的边权更大那么就必须另一个点比自己先选,就形成了一些小于号的关系,也用组合数算一下就没了。

AGC007D

设\(dp_{i}\)表示喂完前\(i\)个熊,并且当前位置在第\(i\)个熊那里,的最短时间。

然后枚举上一次,有两种情况:直接走回去走回来或是要在那里等一下。

显然可以单调队列优化,就没了。

bzoj2216

决策单调性,大家都会。

四边形不等式

如果对于任意\(i_1\le i_2\le j_1\le j_2\),都有
\[
w(i_1,j_2)+w(i_2,j_1)\ge w(i_1,j_1)+w(i_2,j_2)
\]
那么就满足决策单调性。

LOJ566

枚举中位数\(w\),把一条边拆成两条:\(w-a_i,a_i-w\)(分别是白黑边),再两个都加上\(w\),就变成了\(2w-a_i,a_i\),然后就是要求一棵恰好\(n/2\)条白边的最大生成树。

这个直接wqs二分可以得到,于是得到了\(O(m^2\log^2 m)​\)的做法。

然后有一个结论:对于最优的\(w\),这个生成树只包含\(a_i\ge w\)的黑边和\(a_i\le w​\)的白边。(???)

考虑wqs二分的过程,是要把\(2w-a_i\)变成\(2w+k-a_i\),发现这样一来我们可以不枚举\(w\)而直接二分\(2w+k\),然后就没了。

(???)

咕了

LOJ565

我们发现进位一次1的个数就少1。

于是题目就转化为求最后1的个数的期望。

于是操作的顺序与答案无关。

对于每一位,求它的贡献。

从后往前DP,记\(dp_{i,j}\)表示第\(i\)位算上进位叠了\(j\)个1的概率。

转移有两个。一个是由上一位进位而来,是\(dp_{i-1,j}\rightarrow dp_{i,j/2}\);一个是在这个位置的操作,相当于乘\(px+1-x\)的多项式。

直接暴力DP是\(O(n^2)\)的。

发现乘多项式可以分治FFT,而一个位置如果加了\(w\)那么只能往前进位\(\log_2 w\)个位置,于是每个位置可以只处理有值的最大地方,然后就可以证出复杂度是\(O(n\log^2 n)\)了。

2019暑期金华集训 Day7 动态规划的更多相关文章

  1. 2019暑期金华集训 Day7 分治

    自闭集训 Day7 分治 主定理 由于我沉迷调题,这个地方没听课. 某些不等式 咕了 nth_element 使用快速排序的思想,选一个中间点,看左右有多少个. 期望复杂度\(O(n)\). 首先把一 ...

  2. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  3. 2019暑期金华集训 Day6 计算几何

    自闭集训 Day6 计算几何 内积 内积不等式: \[ (A,B)^2\le (A,A)(B,B) \] 其中\((A,B)\)表示\(A\cdot B\). (好像是废话?) 叉积 \[ A\tim ...

  4. 2019暑期金华集训 Day5 树上数据结构

    自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...

  5. 2019暑期金华集训 Day5 生成函数

    自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...

  6. 2019暑期金华集训 Day3 字符串

    自闭集训 Day3 字符串 SAM 考虑后缀树. SAM的parent树是反串的后缀树,所以后面加一个字符的时候相当于往串前面加一个字符,恰好多出了一个后缀. 于是可以以此来理解SAM. 每一条路径对 ...

  7. 2019暑期金华集训 Day3 图论

    自闭集训 Day3 图论 NOI2019 D2T1 没有真正建出图来的必要,可以直接打取\(\min\)的\(tag\). 也可以把边压进堆里,然后变成一个二维清点问题(???),然后就线段树+并查集 ...

  8. 2019暑期金华集训 Day2 线性代数

    自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对 ...

  9. 2019暑期金华集训 Day1 组合计数

    自闭集训 Day1 组合计数 T1 \(n\le 10\):直接暴力枚举. \(n\le 32\):meet in the middle,如果左边选了\(x\),右边选了\(y\)(且\(x+y\le ...

随机推荐

  1. 全栈项目|小书架|服务器开发-Koa2 连接MySQL数据库(Navicat+XAMPP)

    为什么使用数据库 为什么需要数据库?-知乎 相比与文件系统,数据库具有以下优势: 高效率:查找效率高 高可用:可数据库共享 安全性强:数据不能随意修改 选择哪个数据库 数据库可以分为关系型数据库和非关 ...

  2. 未能加载文件或程序集system.web.extensions解决方法

    发现未能加载文件或程序集的错误,这是由于我的机器上没有安装Ajax的原因.问题解决后,整理如下:表现:1."System.Web.Extensions, Version=1.0.61025.0, Cu ...

  3. 基于工作组消息队列高可用&msmq-wcf故障

    场景: msmq 1# server故障手工切换到2# server,msmq-wcf service宿主服务重启后,无法成功读取消息,状似service不工作.无法监听到数据传输. 解决过程: 反复 ...

  4. "超时时间已到。在操作完成之前超时"的解决思路

    错误往往是数据库操作超时引起 1.检查数据库访问连接字符串启用连接池,若是,适当增大超时时间 2.ADO sqlcommand相应调整超时时长 3.关键在于优化数据库操作,优化压缩执行时间

  5. 前端开发 Vue Vue.js和Nodejs的关系

    首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...

  6. 关于ES6的对象扩展运算符

    对象的扩展运算符(...),用于取出参数对象中的所有可遍历属性,然后拷贝到当前对象之中 对象扩展运算符: 1. 复制对象 let obj1 = { x: 1, y: 2, z: 3 } let obj ...

  7. Java之Math类使用小结

    Java的Math类封装了很多与数学有关的属性和方法,大致如下: public class Main { public static void main(String[] args) { // TOD ...

  8. ClickHouse学习笔记

    1. 概述 ClickHouse是一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management Syst ...

  9. ubuntu下关于profile和bashrc中环境变量的理解(转)

    ubuntu下关于profile和bashrc中环境变量的理解(转)   (0) 写在前面 有些名词可能需要解释一下.(也可以先不看这一节,在后面看到有疑惑再上来看相关解释) $PS1和交互式运行(r ...

  10. 【DRF框架】REST风格

    REST风格 表述性状态转移——web交互方案 目的 解决前后端交互的问题,开发效率高,简介,性能好 定义 资源:网上的所有信息或者很抽象的概念,在web中只要又被引用的必要都是资源 URI:统一资源 ...