malic-2021年寒假热身-05 D - 楼高莫近危阑倚(DFS+树状数组)
记录入度,从而找到树的根结点,从根结点进行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+树状数组)相关推荐
- 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」
6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...
- luogu 2717 寒假作业 (树状数组)
题目背景 zzs和zzy正在被寒假作业折磨,然而他们有答案可以抄啊. 题目描述 他们共有n项寒假作业.zzy给每项寒假作业都定义了一个疲劳值Ai,表示抄这个作业所要花的精力.zzs现在想要知道,有多少 ...
- 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]
题目链接 题目大意: 就是一个一维的数轴上面有一堆线段用一个三元组(l,r,val)(l,r,val)(l,r,val)表示. 现在我们有两个操作: 就是往数轴上面添加线段 询问[L,R][L,R][ ...
- P7408-[JOI 2021 Final]ダンジョン 3【贪心,树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P7408 题目大意 一个有n+1n+1n+1层的地牢,从iii到i+1i+1i+1层要AiA_iAi点能量,第ii ...
- acwing 297. 赤壁之战 树状数组优化DP 寒假集训
题目链接 想要求长度为M的子序列,我们可以拿DP方程来计算,并且这个DP也是比较好看出来的DP[i][j]代表着i后j位置中的所有长度为j的子序列,递推方程为 for(int i=1;i<=n; ...
- 2021.8.14【提高B组模拟6】T3 + P7527 [USACO21OPEN] United Cows of Farmer John (树状数组)
United Cows of Farmer John 题目传送门 解题思路 树状数组乱糊 AC代码 #include<cstdio> #include<cstring> usi ...
- AcWing 蓝桥杯AB组辅导课 05、树状数组与线段树
文章目录 前言 一.树状数组 1.1.树状数组知识点 1.2.树状数组代码模板 模板题:AcWing 1264. 动态求连续区间和 例题 例题1.AcWing 1265. 数星星[中等,信息学奥赛一本 ...
- 【软件创新实验室2021年寒假集训】Java后端开发漫谈及感悟分享
系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...
- 【软件创新实验室2021年寒假集训】Java技术培训——Java前置知识学习
系列文章目录 [软件创新实验室2021年寒假集训]汇总篇 20级Java培训 第一天:[软件创新实验室2021年寒假集训]Java技术培训--Java前置知识学习 第二天:Java基础(一) 第三天: ...
最新文章
- python3x 中如何使用tkMessageBox
- fastjson safemode_它又又又来了,Fastjson 最新高危漏洞来袭!
- AC_Automata模板
- SAP Spartacus payment detail page的CMS模型
- Mac版本Navicat下载
- ASP.NET2.0_多语言本地化应用程序
- 算法专题 普及组【2008】三3 C++版
- Spring体系常用方法(一)
- mysql审计 社区版有吗_mysql 5.6 社区版上审计功能,不扯皮
- 三层交换机配置实例及说明
- Open Inventor学习资源
- 星际争霸2的移动机制-初探
- 人民币对美元汇率中间价报6.7472元 上调469个基点
- android自定义网络请求框架,安卓快速开发框架(十九)XBaseAndroid Http网络请求
- 回溯法求解图着色问题
- jqgrid 加载mysql数据_利用jqgrid+加mysql的text类型实现简单自定义数据模型
- Mybatis 解决数据库字段名和实体类属性名不一致问题
- 谭浩强《C语言》学习1
- Web 函数自定义镜像实战:构建图象处理函数
- 人民币贬值 ,对普通人、码农的影响
热门文章
- 【Linux】git clone报错fatal: unable to access ‘https://github.com/xxx.git/‘: Encountered end of file
- supervisor的使用与管理
- 计算机汉字编码不能使用内码,汉字编码及区位码查询算法
- Discuz!论坛部署
- 基于战舰V3的4.3寸电容触摸屏
- OpenStack云平台搭建(3) | 部署Glance
- 【SQL Server】无需公网IP,就可以远程连接SQL Server数据库
- SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)
- ifstat网络流量监控之/proc/net/dev文件
- 图像检索|经典论文阅读|快速入门|综述学习