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]\) 的方案数

\[g[v]=1+g[u]\prod_{w\ne v}(f[w]+1)
\]
\[ans[v]=f[v]\cdot(1+g[u]\prod_{w\ne v}(f[w]+1))
\]

其中 \(\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的更多相关文章

  1. Sth about Educational DP Contest

    Contest Website : atcoder.jp/contests/dp \[\begin{array}{c|C|c|c} TaskNum & TaskName & Statu ...

  2. Atcoder Educational DP Contest

    前面简单一点的题直接过吧. A 暴力DP B 怎么还是暴力DP C 还是暴力DP D 直接背包 E 这个背包不太一样了,这里有一个技巧,就是因为价值很小,所以直接对价值背包,求出来达到某一个权值最小的 ...

  3. Atcoder Educational DP Contest 题解

    A - Frog 1/B - Frog 2 入门... #include<cstdio> #define abs(a) ((a)>=0?(a):(-(a))) #define min ...

  4. Atcoder Educational DP Contest I - Coins (概率DP)

    题意:有\(n\)枚硬币,每枚硬币抛完后向上的概率为\(p[i]\),现在求抛完后向上的硬币个数大于向下的概率. 题解:我们用二维的\(dp[i][j]\)来表示状态,\(i\)表示当前抛的是第\(i ...

  5. Educational DP Contest H - Grid 1 (DP)

    题意:有一个\(n\)X\(m\)的图,"#"表示障碍物,"."表示道路,只能向右或向下走,问从左上角走到右下角的方案数. 题解:这题可以用bfs来搞,但dp更 ...

  6. Educational DP Contest G - Longest Path (dp,拓扑排序)

    题意:给你一张DAG,求图中的最长路径. 题解:用拓扑排序一个点一个点的拿掉,然后dp记录步数即可. 代码: int n,m; int a,b; vector<int> v[N]; int ...

  7. Educational DP Contest F - LCS (LCS输出路径)

    题意:有两个字符串,求他们的最长公共子序列并输出. 题解:首先跑个LCS记录一下dp数组,然后根据dp数组来反着还原路径,只有当两个位置的字符相同时才输出. 代码: char s[N],t[N]; i ...

  8. Educational DP Contest E - Knapsack 2 (01背包进阶版)

    题意:有\(n\)个物品,第\(i\)个物品价值\(v_{i}\),体积为\(w_{i}\),你有容量为\(W\)的背包,求能放物品的最大价值. 题解:经典01背包,但是物品的最大体积给到了\(10^ ...

  9. 【DP】Educational DP Contest

    这份 dp 题单的最后几题好难 orz. 前面的题比较简单,所以我会选取一些题来讲,其它的直接看代码理解吧 qwq. 传送门: https://atcoder.jp/contests/dp 全部 AC ...

  10. AtCoder Educational DP Contest 总结

    前言 感觉都初一升初二了,再做这个题是不是有点太菜了啊-- 里面大概都是些 DP 板子题(确信,题目质量还挺高的,不过不涉及太难的优化(实际上只有最后一题是斜率优化). 不管了,还是写个 blog 来 ...

随机推荐

  1. .NET项目中使用HtmlSanitizer防止XSS攻击

    .NET项目中使用HtmlSanitizer防止XSS攻击 前言 最近博客也是上线了留言板功能,但是没有做审核(太懒了),然后在留言的时候可以输入<script>alert('xss')& ...

  2. hive第一课:Hive3.1.2概述与基本操作

    Hive3.1.2概述与基本操作 1.Hive基本概念 1.1 Hive简介 Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将 ...

  3. 个人网站接入Google Ads的一点心得

    前言 前段时间花了一些精力尝试和摸索主题接入 Google Ads 的问题,算是阶段性成功了吧,这次简单分享一下,如果有缘看到这篇文章,应该会有些启发. 1. 展示效果 上篇文章说到,前两天我在我的两 ...

  4. Excel 更改数据同步更新到Mysql数据库

    刚上班,领导给我提出一个需求,想要每天更新Mysql数据库中的原有商品订单状态,添加新的商品订单状态.因为公司目前的数据库只能添加数据,不能更改数据,想要更改原有的数据,只能将原有的数据清空,再导入新 ...

  5. 韦东山freeRTOS系列教程之【第八章】事件组(event group)

    目录 系列教程总目录 概述 8.1 事件组概念与操作 8.1.1 事件组的概念 8.1.2 事件组的操作 8.2 事件组函数 8.2.1 创建 8.2.2 删除 8.2.3 设置事件 8.2.4 等待 ...

  6. Bond——大数据时代的数据交换和存储格式

    设想我们在一家很大的互联网公司做IT方面的规划.开发和维护,有以下这样的应用场景: 公司里有若干个不同的开发团队,开发语言有Java..net.Python.C++....十来种,还有很多外包团队对项 ...

  7. Mybatis下划线自动映射驼峰字段

    mybatis-config.xml <!--下划线自动映射驼峰字段--> <settings> <setting name="mapUnderscoreToC ...

  8. javaweb使用gson工具使浏览器返回json数据

    1.什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: (2)序列化:对象序列化的最主要的用处就是在传递和保 ...

  9. 【实操记录】MySQL主从配置

    本文使用MySQL原生支持的主从同步机制,详细记录了配置步骤及运维操作方法,可供大家直接参考.使用. 本文假设已经部署了两台主机的MySQL软件,且数据库服务正常,详细部署步骤可本站搜索:" ...

  10. 5 pdf页码跳转失效

    PC端网页查看pdf时,输入非数字页码回车后,页码跳转功能失效