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

P1270 学习笔记

树形 DP 练手题。。

题目传送门

大体思路

一句话:直接把结构存到树里,进行树形 DP。

存树

输入:\(w_1, w_2\)

  • 如果是叶子节点(\(w_2 > 0\)):

    • \(w_{cur} = w_1 * 2\)

    • \(val_{cur} = w_2\)

  • 如果是内部节点(\(w_2 = 0\)):

    • 递归构建左子树

    • 递归构建右子树

具体实现:

build
int build() {int w1, w2, cur = ++tot;cin >> w1 >> w2;w[cur] = w1 * 2;if (w2)val[cur] = w2;else {int l = build();G[cur].push_back(l);int r = build();G[cur].push_back(r);}return cur;//你反不返回都行,这样也能过
}

DP

这里可能要进行一个树上的分组背包了。

初始化
siz[cur] = val[cur] * 5 + w[cur];//初始化偷光所有画的时间
dp[cur][i] = min((i - w[cur]) / 5, val[cur]);//i 时间能偷的画数
树上分组背包

怎么背?板子怎么背就怎么背。

int p = min(t - 1, w[cur]);dp[cur][0] = dp[cur][p] = 0;siz[cur] += w[cur];for (auto i : G[cur]) {dfs(i);siz[cur] += siz[i];//用于剪枝for (int j = min(siz[cur], t - 1); j >= w[cur]; j--)for (int k = 0; k <= min(siz[i], j - w[cur]); k++)dp[cur][j] = max(dp[cur][j], dp[i][k] + dp[cur][j - k]);//这种板板板板子的转移方程不多赘述}
答案

就是根节点的计数呗,但是注意可用时间只有 \(t-1\) 秒。

故答案为

\[dp_{1,t-1} \]

完整code

code
/*********************************************************** Author        : dingziyang888* Website       : https://www.luogu.com.cn/problem/* Created Time  :* FileName      :* Warning!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* 1.MLE?* 2.array size enough?* 3.long long?* 4.overflow long long?* 5.multiple task cleaned?* 6.freopen?* 7.TLE?* *******************************************************/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <climits>
#define I using
#define AK namespace
#define IOI std
#define A return
#define C 0
#define Ofile(s) freopen(s".in", "r", stdin), freopen (s".out", "w", stdout)
#define Cfile(s) fclose(stdin), fclose(stdout)
#define fast ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
I AK IOI;using ll = long long;
using ull = unsigned long long;
using lb = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using pil = pair<int, ll>;
using pli = pair<ll, int>;constexpr int mod = 998244353;
constexpr int maxn = 205;
constexpr int maxk = 6005;int t, tot;int w[maxn], val[maxn];
int dp[maxn][maxk], siz[maxn];vector<int> G[maxn << 1];//树int build() {int w1, w2, cur = ++tot;cin >> w1 >> w2;w[cur] = w1 * 2;if (w2)val[cur] = w2;else {int l = build();//递归建树G[cur].push_back(l);//左子树int r = build();//递归建树G[cur].push_back(r);//右子树}return cur;
}//建树void dfs(int cur) {int p = min(t - 1, w[cur]);dp[cur][0] = dp[cur][p] = 0;if (val[cur]) {siz[cur] += val[cur] * 5;for (int i = w[cur]; i < max(siz[cur] + 1, t); i++)dp[cur][i] = min((i - w[cur]) / 5, val[cur]);//初始化我直接写里面了}siz[cur] += w[cur];for (auto i : G[cur]) {dfs(i);siz[cur] += siz[i];for (int j = min(siz[cur], t - 1); j >= w[cur]; j--)for (int k = 0; k <= min(siz[i], j - w[cur]); k++)dp[cur][j] = max(dp[cur][j], dp[i][k] + dp[cur][j - k]);//板板板板子}
}int main() {fast;freopen("std.in", "r", stdin);freopen("std.out", "w", stdout);cin >> t;build();//建树dfs(1);//DPcout << dp[1][t - 1];//输出A C;//这个玩意保好运
}
http://www.jsqmd.com/news/342875/

相关文章:

  • Daggr:介于 Gradio 和 ComfyUI 之间的 AI 工作流可视化方案
  • 北京上品极致产品设计有限公司:工业设计、产品设计、外观设计、结构设计、设备设计、仪器设计、机器人设计公司,全链条设计服务全景解析 - 海棠依旧大
  • 2026年郑州电加热咖啡豆烘焙机厂家专业推荐:燃气加热咖啡豆烘焙机、小型咖啡豆烘焙机、大型咖啡豆烘焙机、高端咖啡豆烘焙机 - 海棠依旧大
  • AI在生物领域「翻车」?复杂模型不如简单方法
  • 第四章 字符串part01
  • Python aiomysql,asyncio.run() insert into mysql asynchronously
  • 临床前研究中AI驱动的虚拟细胞模型
  • C++中的过滤器模式
  • Matthias Mann万万没想到单细胞蛋白质组学
  • 大数据计算机毕设之基于大数据技术的数据可视化食物营养分析及协同过滤推荐系统基于django+大数据平台的食物营养成分分析与推荐系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 边缘侧时序数据的选型指南:网络不稳定、数据不丢、回传可控——用 Apache IoTDB 设计可靠链路
  • C内存布局
  • 从选型到部署,实测 OpenTeleDB 在高并发更新场景下的真实表现
  • 基于大数据的美食推荐分析系统毕业设计任务书
  • [信息论与编码理论专题-19]:信息熵的量化,通俗易懂!
  • 寒假集训Week1
  • 【毕业设计】基于django+大数据平台的食物营养成分分析与推荐系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • vmware 虚拟机共享文件夹的自动挂载命令
  • [信息论与编码理论专题-20]:数据、信息、编码、信号的区别与关联
  • TypeScript 入门到精通:让你的 JavaScript 代码更具可维护性
  • 2026年郑州咖啡豆烘焙机厂家最新推荐榜单:全自动咖啡烘焙机、大型全自动咖啡豆烘焙机产线、200公斤级咖啡豆烘焙机产线、商用咖啡豆烘焙机、郑州蓝景以全品类适配登榜 - 海棠依旧大
  • 【计算机毕业设计案例】基于django+大数据平台的食物营养成分分析与推荐系统的设计与实现大数据技术和Django框架的健康饮食推荐平台(程序+文档+讲解+定制)
  • 别再一对一去问了:Find the Celebrity 本质是一次“幸存者筛选”
  • dom操作
  • Java实习模拟面试实录:广州小厂高频JVM+并发+MySQL+MQ十连问深度解析
  • 【探索实战】监控、安全与边缘场景的深度落地 - 指南
  • 【时时三省】(C语言基础)结构体的内存对齐
  • 数据平台全景与角色分工——OLTP、OLAP、批/流与数据湖的版图与边界
  • 中国香港股市估值:国际金融中心的市场特点
  • C语言:2026.2.2 (链表)