【题解】CF2033G
题目
CF2033G

分析
一道很显然是树形dp的题,但非常恶心QwQ。
先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的):
d p [ i ] [ k ] = m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o n i , j [ k ] + 1 ) dp[i][k] = max(dp[fa_{i}][k-1], dp[son_{i,j}[k]+1) dp[i][k]=max(dp[fai][k−1],dp[soni,j[k]+1)
其中 d p [ i ] [ k ] dp[i][k] dp[i][k]表示从 i i i开始,能量为 k k k的最远距离
f a i fa_{i} fai表示 i i i的根节点, s o n i , j son_{i,j} soni,j表示 i i i的第 j j j个子节点
这样的问题是会计入这样的路线,实际距离为2,算成了4:

所以,我们得把向上和向下两种情况分开记录:
d p 1 [ i ] dp1[i] dp1[i]表示向下最远距离,由于向下不消耗能量,所以可以少一维
d p 2 [ i ] [ i d ] dp2[i][id] dp2[i][id]表示 i i i节点如果删掉第 i d id id条边后向下最远距离,注意空间限制, d p 2 dp2 dp2得用 v e c t o r vector vector存储, i d id id得另外先预处理好(链式前向星可能会好一点)
i d [ i ] id[i] id[i]表示边 ( i , f a i ) (i, fa_{i}) (i,fai)在 f a i fa_{i} fai的 v e c t o r vector vector中的下标
h [ i ] h[i] h[i]表示节点 i i i的深度,根节点深度为 1 1 1
于是,得到答案的式子为:
A N S ( i , k ) = m a x ( d p 1 [ i ] , d p 2 [ j ] [ i d f r o m i ] + h [ i ] − h [ j ] ) ANS(i, k) = max(dp1[i], dp2[j][id \ from \ \ i] + h[i] - h[j]) ANS(i,k)=max(dp1[i],dp2[j][id from i]+h[i]−h[j])
后面的部分看起来很复杂,实际上直接用 S T ST ST表维护即可
代码
#include<bits/stdc++.h>
#define N 200005
#define inf 1000000000
using namespace std;
int t, n, q, fa[N][21], h[N], dp1[N], st[N][21];
int id[N]; // 记录每个根边的id
vector<int> G[N], dp2[N]; // 去掉边i后向下最远
void cl() {for(int j=0;(1<<j) <= n;j++) {for(int i=1;i<=n;i++) {st[i][j] = -inf;}}for(int i=1;i<=n;i++) {id[i] = 0;dp1[i] = 0;}for(int i=1;i<=n;i++) {vector<int>().swap(G[i]);vector<int>().swap(dp2[i]);}
}
void init(int x, int pre) {for(int j=1;(1<<j) <= h[x];j++) fa[x][j] = fa[fa[x][j-1]][j-1];for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) continue;id[y] = i;h[y] = h[x] + 1;fa[y][0] = x;init(y, x);}
}
void dfs(int x, int pre) {dp1[x] = 0; // dp1是最大,se是第二大int se = -inf; for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) continue;dfs(y, x);if(dp1[y] + 1 >= dp1[x]) {se = dp1[x];dp1[x] = dp1[y] + 1;} else if(dp1[y] + 1 > se) {se = dp1[y] + 1;}}for(int i=0;i<G[x].size();i++) {int y = G[x][i];if(y == pre) {dp2[x].push_back(-inf);continue;}if(dp1[x] == dp1[y] + 1) dp2[x].push_back(se);else dp2[x].push_back(dp1[x]);}
}
void show() {cout<<"showing"<<endl;cout<<"id: "; for(int i=1;i<=n;i++) cout<<id[i]<<' '; cout<<endl;cout<<"h: "; for(int i=1;i<=n;i++) cout<<h[i]<<' '; cout<<endl;cout<<"dp1: ";for(int i=1;i<=n;i++) cout<<dp1[i]<<' ';cout<<endl;for(int i=1;i<=n;i++) {for(int j=0;j<G[i].size();j++) {if(G[i][j] == fa[i][0]) continue;printf("root %d, erase %d, dp2: %d\n", i, G[i][j], dp2[i][j]);}}for(int j=0;(1<<j) <= n; j++) {for(int i=1;i<=n;i++) {if((1<<j) <= h[i]) printf("st[%d][%d]: %d \n" ,i, j, st[i][j]);}}cout<<endl;
}
int main() {cin>>t;while(t--) {cin>>n;cl();for(int i=1;i<=n-1;i++) {int u, v; scanf("%d %d", &u, &v);G[u].push_back(v);G[v].push_back(u);} h[1] = 1; id[1] = -1;init(1, 0);dfs(1, 0);for(int i=2;i<=n;i++) st[i][0] = dp2[fa[i][0]][id[i]] - h[fa[i][0]]; for(int j=1;(1<<j) <= n;j++) {for(int i=1;i<=n;i++) {if((1<<j) <= h[i]) st[i][j] = max(st[i][j-1], st[fa[i][j-1]][j-1]);}}// show();cin>>q;while(q--) {int v, k; scanf("%d %d", &v, &k);k = min(k, h[v]-1);int ans = dp1[v];int step = log2(k), now = v;for(int step=0;(1<<step) <= k; step++) {if(!(k & (1<<step))) continue;ans = max(ans, st[now][step] + h[v]);now = fa[now][step];}printf("%d ", ans);}}
}
相关文章:
【题解】CF2033G
题目 CF2033G 分析 一道很显然是树形dp的题,但非常恶心QwQ。 先不管复杂度,找找递推关系,一种很直接的想法如下(我觉得是错误的): d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …...
【error】 react 控制台报错Invalid hook call
目录 事件起因解决办法结束语 事件起因 我的前端react ant-design-pro项目能正常启动 但是网页这边就是一片空白,然后在浏览器的控制台报错: index.js:1 Warning: Invalid hook call. Hooks can only be called inside of the body of a function co…...
SDL基本使用
#include <stdio.h>#include <SDL.h>#undef main int main() {printf("Hello World!\n");SDL_Window *window NULL; // 声明窗口SDL_Init(SDL_INIT_VIDEO); // 初始化SDL// 创建SDL Windowwindow SDL_CreateWindow("Basic Window"…...
大模型的temperature参数
目录 模型的temperature参数 一、定义与作用 二、工作原理 三、举例说明 四、应用场景与调整策略 五、注意事项 模型的temperature参数 是人工智能领域中,特别是在生成式模型中使用的一个重要概念。它主要用于控制生成结果的多样性和随机性。以下是对该参数的详细解释和…...
软件项目功能复用指南,复用方案,评估方案(word原件)
6 复用原则 6.1 单一职责原则 SRP (Single Responsibility Principle) 6.2 开放封闭原则 OCP (Open Closed Principle) 6.3 Liskov 替换原则 LSP (Liskov Subtitle Principle) 6.4 接口隔离原则 ISP &a…...
leetcode 3255 长度为 K 的子数组的能量值 II 中等
给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为: 如果 所有 元素都是依次 连续 且 上升 的,那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n …...
CCS下载安装(以12.3.0版本为例)
Code Composer Studio 是一个集成开发环境 (IDE),简称CCS软件。支持 TI 的微控制器和嵌入式处理器产品的开发。Code Composer Studio 包含一整套用于开发和调试嵌入式应用程序的工具。 CCS9.3.0及以上版本不需要License文件,但是CCS旧版本比如CCS5.5.0需…...
C++STL容器详解——list
目录 一.list 1.list的介绍 2.为什么会有list? 二.list的常见接口 1.list的构造函数 2.list的遍历 3.迭代器类型 4.list的头插头删和尾插尾删 5.list任意位置的插入和删除 6.list的sort()及reverse() 7.迭代器失效 三.整体代码 一.list 1.list的介绍 list的文档说…...
linux tar 打包为多个文件
将目录打包成多个大小为 80MB 的文件,可以使用以下命令: tar -cf - my_folder | split -b 80m - my_folder.tar.解释: tar -cf - my_folder 将 my_folder 目录打包成一个 tar 文件并通过管道 (|) 输出到标准输出。 split -b 80m - my_fold…...
json字符串与python字典的区别与联系
json字符串与python中自带的字典类型外表长的很像,很容易区分不清楚,它们之间有着本质的区别,可以通过内置的json模块来互相转换。 文章目录 1、Python字典2、JSON数据格式3、JSON与python字典的区别4、JSON与python字典相互转换4.1 json字符…...
数据结构-链表【chapter1】【c语言版】
目录 1 链表的优势: 2 链表的组成: 3.一般使用结构体的形式来实现链表: 4.单向链表实现(创建,遍历,释放): 4.1代码关键点备注: 5.查找节点: 5.1.按值查找节点 5.2.按位置查找节点 5.3 …...
OJ05:989. 数组形式的整数加法
目录 题目思路分析代码展示 题目 整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。 例如,对于 num 1321 ,数组形式是 [1,3,2,1] 。 给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num k 的 数组形…...
山东布谷科技:关于直播源码|语音源码|一对一直播源码提交App Store的流程及重构建议
自从YY、六间房开启国内聊天室和秀场等网红盛行的网络红利时代以来,紧随其后国内各大音视频平台相应出现,先有映客花椒等直播平台的风头正劲,后有功能板块更丰富的头条抖音Tiktok等,盈利功能点不仅仅有直播PK连麦等礼物打赏功能&a…...
docker搭建guacamole,web远程桌面
Apache Guacamole 是一个客户端无插件的远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH。您可以使用任何现代 web 浏览器连接到您的桌面环境,而无需安装额外的软件。使用 Docker Compose 部署 Guacamole,如果没有docker-compose请先执行su…...
.baxia勒索病毒来袭:数据恢复与防护措施详解
导言 在当今这个信息化高速发展的时代,数据已成为企业和个人的核心资产,其价值不可估量。然而,随着网络技术的不断进步,网络安全威胁也日益严峻,其中勒索病毒作为一种新型的网络攻击手段,尤其是.baxia勒索…...
[UUCTF 2022 新生赛]ezpop 详细题解(字符串逃逸)
知识点: php反序列化字符串逃逸 php反序列化魔术方法 构造pop链 变量引用 其实这一题还是比较简单的,只要看懂代码,并且理解为什么要用反序列化字符串逃逸,下面会详细解释 题目源码: <?php //flag in flag.php error_reporting(0); class UUCTF{public $name,$key,$…...
【Zynq UltraScale+ RFSoC】DFE
DFE : digital front-end 数字前端 Xilinx Zynq RFSoC DFE 是一款突破性的灵活应变无线电平台,可强化数字前端 (DFE),用于 5G 大规模无线电部署和广泛的其他射频应用。 Zynq RFSoC DFE 基于唯一经过生产验证的自适应单芯片无线电…...
Ubuntu学习笔记 - Day3
文章目录 学习目标:学习内容:学习笔记:vim简介vim键盘图工作模式 vim移动光标操作上下左右移动翻页 vim替换和删除操作替换删除 vim插入模式详解进入模式搜索 vim底行模式操作保存退出行号 学习目标: 一周掌握 Linux基本使用技巧 …...
scala list系列
dd list:有序的,链表 1.建立 不可变列表 2.通过下标来访问:下标从0开始 3.不能修改 4.添加 5.删除 6.合并 7.查找,判断元素是否存在 8.遍历...
TLS协议基本原理与Wireshark分析_wireshark分析tls协议
01****背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
