记录入度,从而找到树的根结点,从根结点进行DFS,在向叶子结点搜索的时候将当前结点值加入树状数组,在回溯的时候再减去,这样每个子树就不会互相影响。。

#include <iostream>
#include <cmath>
#include <set>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <queue>
#include <vector>
#define IO                       \ios::sync_with_stdio(false); \// cout.tie(0);
#define lson(x) node << 1, start, mid
#define rson(x) node << 1 | 1, mid + 1, endusing namespace std;
// int dis[8][2] = {0, 1, 1, 0, 0, -1, -1, 0, 1, -1, 1, 1, -1, 1, -1, -1};
typedef unsigned long long ULL;
typedef long long LL;
typedef pair<int, int> P;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int inf = 0x3f3f3f3f;
const int maxn = 1e6 + 10;
const int maxm = 1e4 + 10;
const LL mod = 1e9 + 7;
const double eps = 1e-8;
const double pi = acos(-1);
int dis[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
// int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
struct Edge
{int next, to;
} e[maxn];int in[maxn], head[maxn];
int n, k, num = 0;
LL c[maxn], ans = 0;
void add_edge(int u, int v)
{e[num].next = head[u];e[num].to = v;head[u] = num++;
}
LL lowbit(int x)
{return x & (-x);
}
void add(int p, int v)
{while (p <= n){c[p] += v;p += lowbit(p);}return;
}
LL ask(int p)
{LL ans = 0;while (p >= 1){ans += c[p];p -= lowbit(p);}return ans;
}
void DFS(int u)
{ans = ans + ask(min(n, u + k)) - ask(max(0, u - k - 1));add(u, 1);for (int i = head[u]; ~i; i = e[i].next){int v = e[i].to;DFS(v);}add(u, -1);return;
}
int main()
{
#ifdef WXYfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifIO;memset(head, -1, sizeof head);cin >> n >> k;int x, y;for (int i = 0; i < n - 1; i++){cin >> x >> y;add_edge(x, y);in[y]++;}int root;for (int i = 1; i <= n; i++)if (in[i] == 0)root = i;DFS(root);cout << ans;return 0;
}

malic-2021年寒假热身-05 D - 楼高莫近危阑倚(DFS+树状数组)相关推荐

  1. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」

    6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...

  2. luogu 2717 寒假作业 (树状数组)

    题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少 ...

  3. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]

    题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...

  4. P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P7408 题目大意 一个有n+1n+1n+1层的地牢,从iii到i+1i+1i+1层要AiA_iAi​点能量,第ii ...

  5. acwing 297. 赤壁之战 树状数组优化DP 寒假集训

    题目链接 想要求长度为M的子序列,我们可以拿DP方程来计算,并且这个DP也是比较好看出来的DP[i][j]代表着i后j位置中的所有长度为j的子序列,递推方程为 for(int i=1;i<=n; ...

  6. 2021.8.14【提高B组模拟6】T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)

    United Cows of Farmer John 题目传送门 解题思路 树状数组乱糊 AC代码 #include<cstdio> #include<cstring> usi ...

  7. AcWing 蓝桥杯AB组辅导课 05、树状数组与线段树

    文章目录 前言 一.树状数组 1.1.树状数组知识点 1.2.树状数组代码模板 模板题:AcWing 1264. 动态求连续区间和 例题 例题1.AcWing 1265. 数星星[中等,信息学奥赛一本 ...

  8. 【软件创新实验室2021年寒假集训】Java后端开发漫谈及感悟分享

    系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...

  9. 【软件创新实验室2021年寒假集训】Java技术培训——Java前置知识学习

    系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...

最新文章

  1. python3x 中如何使用tkMessageBox
  2. fastjson safemode_它又又又来了,Fastjson 最新高危漏洞来袭!
  3. AC_Automata模板
  4. SAP Spartacus payment detail page的CMS模型
  5. Mac版本Navicat下载
  6. ASP.NET2.0_多语言本地化应用程序
  7. 算法专题 普及组【2008】三3 C++版
  8. Spring体系常用方法(一)
  9. mysql审计 社区版有吗_mysql 5.6 社区版上审计功能,不扯皮
  10. 三层交换机配置实例及说明
  11. Open Inventor学习资源
  12. 星际争霸2的移动机制-初探
  13. 人民币对美元汇率中间价报6.7472元 上调469个基点
  14. android自定义网络请求框架,安卓快速开发框架(十九)XBaseAndroid Http网络请求
  15. 回溯法求解图着色问题
  16. jqgrid 加载mysql数据_利用jqgrid+加mysql的text类型实现简单自定义数据模型
  17. Mybatis 解决数据库字段名和实体类属性名不一致问题
  18. 谭浩强《C语言》学习1
  19. Web 函数自定义镜像实战:构建图象处理函数
  20. 人民币贬值 ,对普通人、码农的影响

热门文章

  1. 【Linux】git clone报错fatal: unable to access ‘https://github.com/xxx.git/‘: Encountered end of file
  2. supervisor的使用与管理
  3. 计算机汉字编码不能使用内码,汉字编码及区位码查询算法
  4. Discuz!论坛部署
  5. 基于战舰V3的4.3寸电容触摸屏
  6. OpenStack云平台搭建(3) | 部署Glance
  7. 【SQL Server】无需公网IP,就可以远程连接SQL Server数据库
  8. SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)
  9. ifstat网络流量监控之/proc/net/dev文件
  10. 图像检索|经典论文阅读|快速入门|综述学习