AT Educational DP Contest
https://atcoder.jp/contests/dp
J - Sushi
设 \(f[i,j,k]\) 表示有 \(1/2/3\) 个寿司的盘子有 \(i/j/k\) 个
考虑随机到哪种盘子列出方程即可解出 \(f[i,j,k]\) 的递推式(\(k,j,i\) 递减)
或者注意到期望 \(\frac{n}{i+j+k}\) 次可以随机到非空盘子,再考虑是哪种
O - Matching
设 \(f[s]\) 表示前 \(i\) 个左部点匹配的右部点状态为 \(s\) 的方案数。时间复杂度 \(O(n^{2}2^{n})\)
注意到匹配的右部点状态为 \(s\) 时下一个被匹配的左部点一定是 \(\text{popcount}(s)\)。时间复杂度 \(O(n2^{n})\)
V - Subtree
(以 \(1\) 为根)设 \(fa[u]\) 为 \(u\) 的父亲,\(f[u]\) 表示 \(u\) 为 \(1\),子树 \(u\) 的方案数。\(f[u]=\prod(f[v]+1)\)
换根。问题是 \(f[v]+1\) 不一定有逆
(以 \(u\) 为根)设 \(ans[u]\) 为 \(u\) 为 \(1\) 的方案数,\(g[u]\) 为 \(u\) 为 \(1\),子树 \(fa[u]\) 的方案数
\]
\]
其中 \(\prod\) 通过维护前后缀积计算
W - Intervals
设 \(f[i,j]\) 表示前缀 \(i\) 中最后一个 \(1\) 位于 \(j\) 的最大收益,在 \(i=r\) 时计算 \((l,r,a)\) 的贡献,需要对第二维进行区间 \(+\),前缀 \(\min\)。线段树
X - Tower
真不会。也算是套路题,忘光了
要对序列而不是通常的集合做背包,所以需要考虑排序方式
考虑答案序列中相邻的元素 \(i,i+1\),需要满足 \(pre\le s_i,pre+w_i\le s_{i+1}\),交换后需要满足 \(pre\le s_{i+1},pre+w_{i+1}\le s_i\),后者能推出前者 \(\iff w_i-w_{i+1}\le s_{i+1}-s_i\),按 \(w_i+s_i\) 升序排序
Y - Grid 2
设值域为 \(X\)。从 \((0,0)\) 走到 \((x,y)\) 的方案数为 \(f(x,y)\)
考虑算补集。如果没有墙,那么 \(f(x,y)={x+y\choose x}\)。枚举非法路径上的第一个墙 \((x_0,y_0)\),方案数为 \(f(x_0,y_0)\times{x-x_0+y-y_0\choose x-x_0}\)
按二元组 \((x,y)\) 排序后 DP 即可
注意组合数要预处理到 \(2X\)。时间复杂度 \(O(X+n^2)\)
A - Frog 1 B - Frog 2
设 \(f[i]\) 表示跳到 \(i\) 的最小代价
C - Vacation
设 \(f/g/h[i]\) 表示第 \(i\) 天做了 \(a/b/c\) 的最大收益
D - Knapsack 1
01 背包
E - Knapsack 2
背包反转体积和价值
F - LCS
LCS 输出方案
G - Longest Path
DAG 最长路
H - Grid 1
设 \(f[i,j]\) 为走到 \((i,j)\) 的方案数
I - Coins
设 \(f[i,j]\) 表示前 \(i\) 个硬币有 \(j\) 个是正面的概率
K - Stones
设 \(f[i]\) 表示剩 \(i\) 个石子的时候先手是否必胜
L - Deque
设 \(f[l,r]\) 表示在区间 \([l,r]\) 博弈的先后手的分差
M - Candies
设 \(f[j]\) 表示前 \(i\) 个人分 \(j\) 个糖的方案数
N - Slimes
设 \(f[l,r]\) 表示把区间 \([l,r]\) 合并成一个的最小代价
P - Independent Set
设 \(f/g[u]\) 表示点 \(u\) 为 \(0/1\) 时子树 \(u\) 的方案数
Q - Flowers
带权 LIS
R - Walk
图上定长路径统计
S - Digit Sum
状态记录当前数位和 \(\bmod D\) 的值
T - Permutation
设 \(f[j]\) 表示前 \(i\) 个数中第 \(i\) 个数为第 \(j\) 大的方案数
U - Grouping
设 \(f[s]\) 表示集合 \(s\) 的最优解。枚举子集
AT Educational DP Contest的更多相关文章
- Sth about Educational DP Contest
Contest Website : atcoder.jp/contests/dp \[\begin{array}{c|C|c|c} TaskNum & TaskName & Statu ...
- Atcoder Educational DP Contest
前面简单一点的题直接过吧. A 暴力DP B 怎么还是暴力DP C 还是暴力DP D 直接背包 E 这个背包不太一样了,这里有一个技巧,就是因为价值很小,所以直接对价值背包,求出来达到某一个权值最小的 ...
- Atcoder Educational DP Contest 题解
A - Frog 1/B - Frog 2 入门... #include<cstdio> #define abs(a) ((a)>=0?(a):(-(a))) #define min ...
- Atcoder Educational DP Contest I - Coins (概率DP)
题意:有\(n\)枚硬币,每枚硬币抛完后向上的概率为\(p[i]\),现在求抛完后向上的硬币个数大于向下的概率. 题解:我们用二维的\(dp[i][j]\)来表示状态,\(i\)表示当前抛的是第\(i ...
- Educational DP Contest H - Grid 1 (DP)
题意:有一个\(n\)X\(m\)的图,"#"表示障碍物,"."表示道路,只能向右或向下走,问从左上角走到右下角的方案数. 题解:这题可以用bfs来搞,但dp更 ...
- Educational DP Contest G - Longest Path (dp,拓扑排序)
题意:给你一张DAG,求图中的最长路径. 题解:用拓扑排序一个点一个点的拿掉,然后dp记录步数即可. 代码: int n,m; int a,b; vector<int> v[N]; int ...
- Educational DP Contest F - LCS (LCS输出路径)
题意:有两个字符串,求他们的最长公共子序列并输出. 题解:首先跑个LCS记录一下dp数组,然后根据dp数组来反着还原路径,只有当两个位置的字符相同时才输出. 代码: char s[N],t[N]; i ...
- Educational DP Contest E - Knapsack 2 (01背包进阶版)
题意:有\(n\)个物品,第\(i\)个物品价值\(v_{i}\),体积为\(w_{i}\),你有容量为\(W\)的背包,求能放物品的最大价值. 题解:经典01背包,但是物品的最大体积给到了\(10^ ...
- 【DP】Educational DP Contest
这份 dp 题单的最后几题好难 orz. 前面的题比较简单,所以我会选取一些题来讲,其它的直接看代码理解吧 qwq. 传送门: https://atcoder.jp/contests/dp 全部 AC ...
- AtCoder Educational DP Contest 总结
前言 感觉都初一升初二了,再做这个题是不是有点太菜了啊-- 里面大概都是些 DP 板子题(确信,题目质量还挺高的,不过不涉及太难的优化(实际上只有最后一题是斜率优化). 不管了,还是写个 blog 来 ...
随机推荐
- 《Vue3.x +TpyeScript实践指南》勘误
图书出版已有一段时间,书中已发现错误如下: 书的第14页,倒数第3行,npm init -y命令中,init和-y之间应该有个空格: 书的第32页,代码的第1行,应该为模板字符串符号 `,我看印刷的是 ...
- pytest_fixture通过参数request获取测试数据,并在fixture方法里面使用
pytest fixture传参request的使用 获取request对pytest插件的版本有要求,如果找不到request报错的话, 建议先升级pytest的版本 要实现的效果 执行测试用例,调 ...
- mysql在把子查询结果作为删除表中数据的条件,mysql不允许在子查询的同时删除原表数据
在上一文中发布了多表删除指定记录,发现达不到我想要的效果,找了很多资料,发现以下方法. 数据库不能边查询边删除, 尝试以下操作 delete from push_msg_overview where ...
- Springboot中自定义监听器
一.监听器模式图 二.监听器三要素 广播器:用来发布事件 事件:需要被传播的消息 监听器:一个对象对一个事件的发生做出反应,这个对象就是事件监听器 三.监听器的实现方式 1.实现自定义事件 自定义事件 ...
- IEC103设备数据 转 IEC61850项目案例
目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 配置VFBOX网关采集103设备数是 2 5 用IEC61850协议转发数据 4 6 网关使用多个逻辑设备和逻辑节点的方法 ...
- Redis常见的16个使用场景
1.缓存 String类型 例如:热点数据缓存(例如报表.明星出轨),对象缓存.全页缓存.可以提升热点数据的访问数据. 2.数据共享分布式 String 类型,因为 Redis 是分布式的独立服务,可 ...
- 使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类就这么简单!
前言 今天大姚给大家分享一个.NET开源.免费.跨平台(支持Windows.Linux.macOS多个操作系统)的机器学习框架:ML.NET.并且本文将会带你快速使用ML.NET训练一个属于自己的图像 ...
- 高程读后感(三)— JS对象实现继承的6种模式及其优缺点
目录 1.原型链 1.1.默认的原型 1.2.原型和实例的关系 1.3.原型链的问题 2.借用构造函数 2.1.传递参数 2.2.借用构造函数的问题 3.组合继承 4.原型式继承 5.寄生式继承 6. ...
- 学习笔记--Java合集
学习笔记--Java合集 JDK8 基础篇 我的第一个Java程序 Java标识符 Java 字面值 Java中的变量 Java中的数据类型 Java 运算符 Java 控制语句 方法 Java方法基 ...
- SUM-ACM——VJ天梯训练赛
这次比赛我暴露了很多问题,一些模拟还有贪心思路错误. 补题如下: E - E 题解:一道模拟题,我的问题在于不知道怎么替换下一个,就从0开始遍历数组然后数组的值--,如果为零就continue下一个, ...