动态规划,dp
文章平均质量分 82
star-city
蒟蒻OIer一枚
展开
-
九省联考2018D1T1 一双木棋
链接可以观察到,整个对局过程中的任意时刻,棋盘总是被一条从左下到右上的轮廓线拆分成有子和无子的两部分。因此,我们可以考虑轮廓线dp,从左下角开始,向上的边为1,向右的边为0。设f[sta]表示当状态为sta时,双方都选择最优方案还能获得的收益,则初始状态(也就是最终对局结果)为f[11...1100...00],最终状态(也就是开始对局的状态)为f[00...0011...11]。状态倒着读,因为...原创 2018-04-15 15:10:42 · 374 阅读 · 0 评论 -
九省联考2018D1T3 秘密袭击
链接又是一道经典的暴力碾标算。对每个点分别计算贡献最后加一块就好了。假如当前正在计算s的贡献,设f[i][j]代表包含从s到i的路径且使得s为第j大的连通块个数,进行简单的树上dp,s最终带来的贡献就是f[s][k] * d[i]。具体实现见代码。#include <iostream>#include <cstring>#include <cstdio>...原创 2018-04-15 20:34:07 · 481 阅读 · 0 评论 -
洛谷2577 午餐
链接 一道转移方程只有两行但调了一下午的dp。。。 先对所有人按吃饭时间排个序,因为吃饭慢的先打饭结果会更优。 设f[i][j][k]表示前i个人在第一列打饭总时间为j,第二列打饭总时间为k的最快集合时间,但是这样是MLE的。。。 可以发现k其实就是前i个人打饭总时间减掉在第一列的时间,所以只需要f[i][j]就够了。 但我们还是感到不爽,因为这个东西类似于一个背包,所以数组第一维i也就...原创 2018-04-29 18:20:53 · 187 阅读 · 0 评论