刷题记录:牛客NC24263[USACO 2018 Feb G]Directory Traversal
admin
2024-02-10 07:47:52
0

传送门:牛客

题目描述:

题目较长,此处省略
输入:
8
bessie 3 2 6 8
folder1 2 3 4
file1 0
folder2 1 5
file2 0
folder3 1 7
file3 0
file4 0
输出:
42

感觉是一道较难的二次扫描换根dp的题目

主要思路:

  1. 首先分析一下我们的题目,我们会发现当前的节点uuu如果往下走到节点vvv的话,那么消耗的数值为v文件的name+1v文件的name+1v文件的name+1,但是从v节点往上走到uuu节点的话消耗的是../../../,也就是333点消费.然后题目的要求就是求出一个文件夹节点,使其到任意其他叶子节点的距离和最小(注意此处我们的文件夹节点默认是有文件的)
  2. 然后根据树形dp的套路,我们应该不难想到使用f[u]来记录所有uuu的子树中的叶子节点,并且应该有一个显然的转移想法,当前的uuu节点的距离和应该是所有子节点的距离和,也就是∑fv\sum_{}^{}{f_v}∑​fv​,并且在这个的基础上还需要加上当前结点往下走一步的贡献(这个贡献与我们的v节点的长度有关,我们可以先进行预处理,存在w[u][v]中).然后就不难得出我们的dp方程了:

f[u]+=leaf_size[v]∗w[u][i]+f[v];f[u]+=leaf\_size[v]*w[u][i]+f[v];f[u]+=leaf_size[v]∗w[u][i]+f[v];

leaf_size存储的是当前v节点的所有叶子节点的个数leaf\_size存储的是当前v节点的所有叶子节点的个数leaf_size存储的是当前v节点的所有叶子节点的个数

  1. 但是显然的,我们现在存储的只是每一个节点的儿字的贡献,但是事实上我们的路径之和还包括我们的父亲对其的贡献.这就需要我们使用换根dp换根dp换根dp的想法了
  2. 我们再使用一个数组g[u]g[u]g[u]来存储我们父亲那边的贡献.这个贡献由两部分组成:
    1.一部分是我们当前结点的兄弟结点的贡献
    2.一部分是我们的当前结点的父亲的父亲的那边的贡献

对于第一部分来说,我们考虑一下我们的文件路径的移动方式,对于我们的兄弟结点中的每一个叶子结点,我们都是需要我们的当前的节点往上移动一步,然后再往下移动到各个节点.这一部分的总贡献就是:3∗(leaf_size[u]−leaf_size[v])+f[u]−f[v]−w[u][v]∗leaf_size[v]3*(leaf\_size[u]-leaf\_size[v])+f[u]-f[v]-w[u][v]*leaf\_size[v]3∗(leaf_size[u]−leaf_size[v])+f[u]−f[v]−w[u][v]∗leaf_size[v],注意这一部分我们还需要减去我们的刚开始由uuu节点往下走到v节点,因为我们的f[v]f[v]f[v]并没有包括这一部分

对于我们的第二部分来说,我们发现需要求出的父亲的父亲的贡献其实在我们的dfs过程中就可以求出来了,为g[u]g[u]g[u].但是类似的,我们还需要加上我们的当前节点v走到节点u的贡献.也就是3∗(leaf_size[1]−leaf_size[u])3*(leaf\_size[1]-leaf\_size[u])3∗(leaf_size[1]−leaf_size[u])

对于最终的答案,就是在所有的f[u]+g[u]−leaf_size[1]f[u]+g[u]-leaf\_size[1]f[u]+g[u]−leaf_size[1]中取最小值即可,为什么要减一呢,这是因为我们在之前求路径的时候将每一个叶子节点也多加了一个$$符号,所以我们需要在答案过程中减去每一个叶子节点的多余贡献

下面是具体的代码部分:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
#define ll_maxn 0x3f3f3f3f3f3f3f3f
const double eps=1e-8;
int n;
vectortree[maxn],w[maxn];
ll g[maxn],f[maxn];//记录儿子叶子节点的总路径/除儿子以外的叶子节点的和
ll node_length[maxn],leaf_size[maxn];
void dfs1(int u) {if(tree[u].size()) {for(int i=0;iint v=tree[u][i];dfs1(v);leaf_size[u]+=leaf_size[v];f[u]+=leaf_size[v]*w[u][i]+f[v];}	}else {leaf_size[u]=1;}return ;
}
ll ans=ll_maxn;
void dfs2(int u) {if(tree[u].size()) {for(int i=0;iint v=tree[u][i];g[v]=3*(leaf_size[1]-leaf_size[u])+g[u]+3*(leaf_size[u]-leaf_size[v])+f[u]-f[v]-leaf_size[v]*w[u][i];dfs2(v);}ans=min(ans,g[u]+f[u]-leaf_size[1]);}return ;
}
int main() {n=read();string s;int num;int v;for(int i=1;i<=n;i++) {cin>>s;node_length[i]=s.length();num=read();for(int j=1;j<=num;j++) {v=read();tree[i].push_back(v);}}for(int i=1;i<=n;i++) {for(int j=0;jint v=tree[i][j];w[i].push_back(node_length[v]+1);}}dfs1(1);dfs2(1);cout<

相关内容

热门资讯

别让老ERP拖垮业务:强制升级... ERP系统是企业运营的“神经中枢”,但随着技术迭代与业务环境变化,老旧系统可能从“稳定工具”变为“发...
2025年地方债市场回顾与20... 扫码文末“投小圈” 加入行业交流群 文章来源:中证鹏元评级 作者:吴志武 "主要内容 1、2025年...
原创 危... 2026年1月,俄乌战争进入了它的第四个冬季。在这片被冰雪覆盖的土地上,基辅的寒冷几乎让人无法忍受,...
GDP140万亿跟你无关?醒醒... 近日,官方数据出来了! “十四五”时期,我国经济总量实现“四连跳”,先后迈上了110万亿、120万亿...
原创 印... 印度近期一声永不屈服,却最终扛不住压力,宣布暂停进口俄罗斯石油。失去了印度这个重要市场后,俄罗斯的目...
原创 帮... 各位朋友,这个周末的市场资讯简直像开了盲盒,监管重罚、行业涨价、妖股停牌全凑齐了,每一个都关乎咱们的...
中基协:注销瑞丰达等9家私募基... 1月23日,中国证券投资基金业协会发布公告,注销5家期限届满未提交专项法律意见书的私募基金管理人登记...
原创 中... 前言 中国买大豆,美国抓油船,这一场景背后,正上演着一场双轨博弈。乍一看,这似乎只是农产品采购与能源...
原创 欧... 因为特朗普的无理要求,欧洲终于忍无可忍,近期在格陵兰岛问题上对美国亮出了底线,明确表示绝不允许美国夺...
昭衍新药大宗交易折价成交595... 昭衍新药01月23日大宗交易平台共发生2笔成交,合计成交量595.00万股,成交金额21306.95...
锚定10%增速、年推30款新品... 本报(chinatimes.net.cn)记者胡梦然 深圳报道 一份行动方案,将深圳科技保险保费的年...
黄金白银再创历史新高,高手怎么... 本周,虽然上证指数表现平淡,但结构性行情较好,如黄金白银、锂电池表现靓丽。在周五,马斯克讲话刺激太空...
京东年货节1月25日晚8点开启... 1月25日晚8点,京东年货节盛大开启!不仅有官方直降5折起、国补加补至高3000元等重磅福利,而且还...
AI应用龙头,又被空头整了 在过去两年的美股市场里,Applovin堪称AI应用的顶流。 这家公司凭借AI广告的业务定位,在一年...
嘉实低价策略股票:2025年第... AI基金嘉实低价策略股票(001577)披露2025年四季报,第四季度基金利润1220.76万元,加...
原创 变... 本文内容均引用权威资料结合个人观点进行撰写,文末已标注文献来源,请知悉。 近几年来,中国经济增长的...
图解牛熊股贵金属概念涨幅居前,... 财联社1月25日讯,本周A股三大指数涨跌不一,其中上证指数周涨0.83%,深成指周涨1.11%,创业...
兴银研究精选股票A:2025年... AI基金兴银研究精选股票A(008537)披露2025年四季报,第四季度基金利润398.92万元,加...
2026全球服务商大会:为中国... 转自:新华财经 新华财经上海1月25日电(记者 郭敬丹、有之炘)自2019年首次发布以来,上海市静安...
权威访谈 开局“十五五”丨央行... “十五五”开局之年,适度宽松的货币政策如何发力?总台央视记者对中国人民银行行长潘功胜进行了专访。潘功...