博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2783: [JLOI2012]树
阅读量:5034 次
发布时间:2019-06-12

本文共 839 字,大约阅读时间需要 2 分钟。

Description

在这个问题中,给定一个值S和一棵树。在树的每个节点有一个正整数,问有多少条路径的节点总和达到S。路径中节点的深度必须是升序的。假设节点1是根节点,根的深度是0,它的儿子节点的深度为1。路径不必一定从根节点开始。

解题报告:

用时20min,1AC
这题找到了题面就简单了,因为题目要求路径深度要满足升序,所以直接把一个点的所有的父节点都压人栈中,然后二分到那个位置,如果存在这样的路径答案就加1

#include 
#include
#include
#include
#include
#include
#define RG register#define il inline#define iter iterator#define Max(a,b) ((a)>(b)?(a):(b))#define Min(a,b) ((a)<(b)?(a):(b))using namespace std;const int N=100005;int head[N],num=0,S,nxt[N<<1],to[N<<1],val[N],n,st[N],top=0,dis[N];void link(int x,int y){nxt[++num]=head[x];to[num]=y;head[x]=num;}bool check(int x){ int l=0,r=top,mid; while(l<=r){ mid=(l+r)>>1; if(dis[x]-dis[st[mid]]==S)return true; if(dis[x]-dis[st[mid]]

转载于:https://www.cnblogs.com/Yuzao/p/7608099.html

你可能感兴趣的文章
异构GoldenGate 12c 双向复制配置
查看>>
01-HTML基础与进阶-day6-录像280
查看>>
你听过稀疏数组(sparseArray)吗?
查看>>
Google的java工具类Guava
查看>>
信息安全系统设计基础实验二报告
查看>>
Linux Shell脚本编程基础(11)
查看>>
Hibernate批量处理数据
查看>>
Entity Framework实体框架快速入门
查看>>
Nvidia显卡安装驱动
查看>>
pom文件解析
查看>>
[51nod] 1257 背包问题 V3
查看>>
[转]rsync的配置与应用
查看>>
【Java】Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 1099
查看>>
jmeter中jdbc连接数据库——(一)
查看>>
常见缓存问题
查看>>
iphone开发笔记
查看>>
css文档流,元素
查看>>
A. Strange Addition 暴力
查看>>
ABBYY FineReader软件开发工具包解析
查看>>
LinkedList 底层实现原理
查看>>