当前位置: 首页 > news >正文

洛谷P4516 [JSOI2018] 潜入行动

朴素的设计 \(DP\)\(dp_{i,j,0/1,0/1}\) 表示 \(i\) 的子树选了 \(j\) 个点,当前选没有,当前被覆盖没有。

令人火大的转移方程(具体转移边界还请看代码):

\[\begin{align}&dp_{u,j,0,0} = \sum_{k=1}^{siz_u} dp_{u,k,0,0} \times dp_{v,j-k,0,1} \\ &dp_{u,j,0,1} = \begin{cases} \sum_{k=1}^{siz_u} dp_{u,k,0,0} \times dp_{v,j-k,1,1} \\ \sum_{k=1}^{siz_u} dp_{u,k,0,1} \times dp_{v,j-k,0,1} \\ \sum_{k=1}^{siz_u} dp_{u,k,0,1} \times dp_{v,j-k,1,1} \end{cases} \\ &dp_{u,j,1,0} = \begin{cases} \sum_{k=1}^{siz_u} dp_{u,k,1,0} \times dp_{v,j-k,0,0} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,0} \times dp_{v,j-k,0,1} \end{cases} \\ &dp_{u,j,1,1} = \begin{cases} \sum_{k=1}^{siz_u} dp_{u,k,1,0} \times dp_{v,j-k,1,0} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,0} \times dp_{v,j-k,1,1} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,1} \times dp_{v,j-k,0,0} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,1} \times dp_{v,j-k,0,1} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,1} \times dp_{v,j-k,1,0} \\ \sum_{k=1}^{siz_u} dp_{u,k,1,1} \times dp_{v,j-k,1,1} \end{cases}\end{align} \]

最后注意转移边界以及外层倒序枚举就行了。

\(\Large \mathscr{Code}\)

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 100, MOD = 1e9 + 7;
int n, m, dp[N][105][2][2], k, siz[N];
vector<int> g[N];
void dfs(int u, int fa) {siz[u] = dp[u][0][0][0] = dp[u][1][1][0] = 1;for (int e : g[u]) {if (e == fa) continue;dfs(e, u);siz[u] += siz[e];for (int i = min(k, siz[u]); i >= 0; i--) {int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;for (int j = 0; j <= min(i, siz[e]); j++) {if (i - j > siz[u] - siz[e]) continue;sum1 = (sum1 + 1ll * dp[u][i - j][0][0] * dp[e][j][0][1] % MOD) % MOD;sum2 = (sum2 + 1ll * dp[u][i - j][0][0] * dp[e][j][1][1] % MOD) % MOD;sum2 = (sum2 + 1ll * dp[u][i - j][0][1] * dp[e][j][0][1] % MOD) % MOD;sum2 = (sum2 + 1ll * dp[u][i - j][0][1] * dp[e][j][1][1] % MOD) % MOD;sum3 = (sum3 + 1ll * dp[u][i - j][1][0] * dp[e][j][0][0] % MOD) % MOD;sum3 = (sum3 + 1ll * dp[u][i - j][1][0] * dp[e][j][0][1] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][0] * dp[e][j][1][0] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][0] * dp[e][j][1][1] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][1] * dp[e][j][0][0] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][1] * dp[e][j][0][1] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][1] * dp[e][j][1][0] % MOD) % MOD;sum4 = (sum4 + 1ll * dp[u][i - j][1][1] * dp[e][j][1][1] % MOD) % MOD;}dp[u][i][0][0] = sum1, dp[u][i][0][1] = sum2, dp[u][i][1][0] = sum3, dp[u][i][1][1] = sum4;}}
}
signed main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> n >> k;for (int i = 1; i < n; i++) {int x, y;cin >> x >> y;g[x].push_back(y), g[y].push_back(x);}dfs(1, 0);cout << (dp[1][k][0][1] + dp[1][k][1][1]) % MOD;return 0;
}
http://www.gsyq.cn/news/22254.html

相关文章:

  • vscode的本地界面
  • 线段树与平衡树
  • 面向对象进阶-2
  • Android四大组件之Servers、BroadcastReceiver、ContentProvider(内容提供者)
  • 详细介绍:verilog中的FIR滤波器和自控中一阶低通滤波器的区别和共性
  • openresty开发lua-resty-openssl之rsa公钥加密私钥解密 - liuxm
  • 2025年6款主流CRM系统详解
  • 动手动脑及实验性问题总结
  • 华为云rds pg 11升级17
  • 全球顶尖的医疗器械CRM软件(深度对比)
  • 2025年冷冻研磨仪厂家,研磨仪厂家排行,知名品牌介绍
  • 实用指南:自动化专业核心课《计算机控制技术》导览---数字时代的控制中枢
  • The World of Torrents (How it Works?)
  • 进口高温高压粘度计优质供应商,粘度计代理商推荐
  • 2025 年循环烘箱厂家推荐榜:热风循环烘箱厂家聚焦节能智能,这家企业成多行业优选
  • 2025通风天窗厂家推荐正鑫,专业定制工业厂房通风排烟系统
  • Ubuntu 上安装 PHP 环境
  • 我42岁才顿悟:穷人的富养是带娃到处旅游,富人的富养是教会这一项本事
  • 命令行AI编程工具Jules Tools发布解析
  • OceanBase素材字典和性能视图
  • 2025年工业机器人厂家最新权威推荐榜:专业集成与智能应用解决方案深度解析
  • what is 8.3 file-naming convention?
  • what is .NFO?
  • 如何在AutoCAD中进行GIS空间查询?
  • 2025 年电子散热器厂家 TOP 企业品牌推荐排行榜,电子 / 型材 / 插片 / 电源 / 固态 / 变频器 / 铝合金 / 逆变器散热器 / 散热器铝型材公司推荐
  • [temporary] Arkady and rectangles
  • 详细介绍:macOS 下安装 zsh、zsh-syntax-highlighting、powerlevel9k、nerd-font
  • AWS | Linux 硬盘挂载综合教程 - 实践
  • FFmpeg 实现视频批量剪辑
  • SaltStack 集群安装指南