当前位置: 首页 > 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.hskmm.com/?act=detail&tid=32308

相关文章:

  • Mysql1064,最常见的语法错误
  • 一对一直播源码搭建:后来者的源码选择与专业研发的关键考量
  • 总氮检测仪靠谱供应商,总氮水质分析仪厂家推荐,总磷/氨氮/COD等仪器哪家好?
  • 多领域对话自动评估技术突破
  • 直面挑战:MySQL 千万级数据高性能优化实战指南
  • 泳池水检测仪厂家推荐,余氯检测仪哪个品牌好?COD水质/总氮/氨氮靠谱供应商
  • 常见的名词
  • 线段树与平衡树
  • 面向对象进阶-2
  • CF2155 Codeforces Round 1056 (Div. 2) 游记(VP)
  • 【隐语SecretFlow社区】万字长文解读构建可信数据空间相关标准
  • Android四大组件之Servers、BroadcastReceiver、ContentProvider(内容提供者)
  • 2025年智能装备与机器人国际学术会议(IER 2025)
  • 编程计算定投黄金的收益率
  • 客户管理软件是什么?深度解析及标杆产品推荐
  • openresty开发lua-resty-openssl之rsa公钥加密私钥解密 - liuxm
  • 2025年6款主流CRM系统详解
  • 动手动脑及实验性问题总结
  • 华为云rds pg 11升级17
  • 盘点2025破碎仪厂家/提供研磨处理方案的厂家
  • 全球顶尖的医疗器械CRM软件(深度对比)
  • uni-app x开发商城系统,tabBar
  • Delphi TscGPPageControl动态创建新页面与加载Frame框架
  • 静态方法访问类的实例成员
  • 2025年冷冻研磨仪厂家,研磨仪厂家排行,知名品牌介绍
  • 组织研磨仪厂家品牌推荐/知名品牌,组织研磨仪哪家好?
  • The World of Torrents (How it Works?)
  • 进口微量粘度计代理商推荐,优质供应商分享
  • 10月16日
  • 进口高温高压粘度计优质供应商,粘度计代理商推荐