洛谷 P3252 [JLOI2012] 树

news/2024/7/20 20:09:23 标签: 算法, c++, 数据结构, , LCA, 深度优先


读题就读趋势了,还以为是每个深度都可以选一个,然后深度升序就可以了,以为是个按深度的01背包

但是前面还说了是一条路径,路径是不能断开的。那就从每个点开始爆搜一次就好了。

看了一下范围n<=1e5,n^2爆搜理论上是不行的,但是这道题实在是淼。正解看dfs下方。

伪AC代码(dfs)

#include <bits/stdc++.h>
using namespace std;

inline int read(){
    int x=0;char c=getchar();
    while(c<48 or c>57)c=getchar();
    while(c>=48 and c<=57)x=(x<<3)+(x<<1)+(c xor 48),c=getchar();
    return x;
}

const int N=1e5+5;
int n,s,w[N],ans;//有多少节点权值深度为s
vector<int>e[N];

void dfs(int now,int sum){
    if(sum>s)return;
    if(sum==s){
        ans++;
        return;
    }
    for(auto i:e[now])dfs(i,sum+w[i]);
}
int main(){
    ios::sync_with_stdio(false);
    n=read(),s=read();
    for(int i=1;i<=n;++i)w[i]=read();
    for(int i=1,x,y;i<=n-1;++i){
        x=read(),y=read();
        e[x].push_back(y);
    }

    for(int i=1;i<=n;++i)
        dfs(i,w[i]);

    cout<<ans<<endl;
    return 0;
}

思路

因为是,所以每个节点仅有1个父节点,存下每个节点到根节点的前缀和,以倍增的形式往上跳,把所有小于<s的都跳了,如果等于s就路径+1。

每个点倍增一次,复杂度nlogn,此题正解!

代码

无,爆搜能过还要什么倍增(暴论)


http://www.niftyadmin.cn/n/5201804.html

相关文章

Java Finalization‘s Memory-Retention Issues 及Reference类解析

引言 《Effective Java Programming Language Guide》 一书中强烈建议不要使用java的finalize()方法去做对象消亡前的清理。因为jvm调用finalize()方法的时机并不确定&#xff0c;容易导致Memory-Retention Issues。通俗点讲就是内存没办法及时回收。 详细的见oracle的官方说明…

目标检测YOLO系列从入门到精通技术详解100篇-【目标检测】点云

目录 点云及三维图像处理 点云概念 点云的处理 点云的数据处理

TensorFlow实战教程(十九)-Keras搭建循环神经网络分类案例及RNN原理详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了卷积神经网络CNN原理,并通过Keras编写CNN实现了MNIST分类学习案例。这篇文章将详细讲解循环神经网络RNN的原理知识,并采用Keras实现手写数字识别的RNN分类案例及可视化呈现。基础性文…

管理体系标准

管理体系标准 什么是管理体系&#xff1f; 管理体系是组织管理其业务的相互关联部分以实现其目标的方式。这些目标可能涉及许多不同的主题&#xff0c;包括产品或服务质量、运营效率、环境绩效、工作场所的健康和安全等等。 系统的复杂程度取决于每个组织的具体情况。对于某…

nodejs微信小程序+python+PHP-维斯公司财务管理系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

树莓派的的串口通信协议

首先&#xff0c;回顾一下串口的核心知识点&#xff0c;也是面试重点&#xff1a; 串口通信通常使用在多机通讯中串口通信是全双工的决定串口通信的成功与否的是 数据格式 和 波特率数据格式&#xff1a;1. 数据位 2.停止位 3. 奇偶校验位 树莓派恢复串口 回忆前几节树莓派刷机…

基于变色龙算法优化概率神经网络PNN的分类预测 - 附代码

基于变色龙算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于变色龙算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于变色龙优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络…

Flink之状态TTL机制

在Flink状态使用过程中有时需要清除State中不许需要的数据,否则State中的数据会越来越多,既增加了内存压力,也降低了计算效率.而TTL机制可以很好的帮我们解决这个分体,利用TTL机制可以将状态中的冷热数据分离,将使用率很低的冷数据及时清除. 这里以Operator State为例子 class…