点分治练习

P3806 【模板】点分治 1

#include <bits/stdc++.h>
using namespace std;inline long long read() {char ch = getchar();long long f = 1,x = 0;while (ch > '9' || ch < '0') { if (ch == '-')f = -1; ch = getchar(); }while (ch >= '0' && ch <= '9') { x = (x << 1) + (x << 3) + ch - '0'; ch = getchar(); }return x * f;
}
//void ReadFile() {
//	FILE* stream1;
//	freopen_s(&stream1,"in.txt", "r", stdin);
//	freopen_s(&stream1,"out.txt", "w", stdout);
//}static auto speedup = []() {ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); return nullptr; }();const int maxn = 1e4 + 7,INF = 1e7 + 7;
bitset<INF> judge;int n,m,vis[maxn],sum = 0,subsum = 0,root = 0, ask[maxn],ans[maxn],siz[maxn],d[maxn],dis[maxn],cnt;
int q[INF];struct Node {Node() :y(0), dis(0){}Node(int a,int b) :y(a), dis(b) {}int y,dis;
};
vector<Node> e[maxn];void getroot(int x, int fa) {siz[x] = 1;int s = 0;for (auto& nx : e[x]) {if (nx.y == fa || vis[nx.y])continue;getroot(nx.y, x);siz[x] += siz[nx.y];s = max(s, siz[nx.y]);}s = max(s, sum - siz[x]);if (s < subsum) {root = x;subsum = s;}}
void getdis(int x, int fa) {dis[++cnt] = d[x];for (auto& nx : e[x]) {if (nx.y == fa || vis[nx.y])continue;d[nx.y] = d[x] + nx.dis;getdis(nx.y, x);}
}void calc(int x) {judge[0] = 1;int p = 0;for (auto& nx : e[x]) {if (vis[nx.y])continue;cnt = 0;d[nx.y] = nx.dis;getdis(nx.y, x);for (int j = 1; j <= cnt; j++) {for (int k = 1; k <= m; k++) {if (ask[k] >= dis[j]) {ans[k] |= judge[ask[k] - dis[j]];}}}for (int j = 1; j <= cnt; j++) {if (dis[j] < INF) {q[++p] = dis[j];judge[dis[j]] = 1;}}}for (int i = 1; i <= p; i++)judge[q[i]] = 0;
}void divide(int x) {calc(x);vis[x] = 1;for (auto& nx : e[x]) {if (vis[nx.y])continue;sum = subsum = siz[nx.y];getroot(nx.y,0);divide(root);}
}
void slove() {cin >> n >> m;int a, b, c;for (int i = 1; i < n; i++) {cin >> a >> b >> c;e[a].push_back(Node{ b,c });e[b].push_back(Node{ a,c });}for (int i = 1; i <= m; i++) {cin >> ask[i];}sum = subsum = n;getroot(1, 0);getroot(root, 0);divide(root);for (int i = 1; i <= m; i++) {cout << (ans[i] ? "AYE" : "NAY") << endl;}
}
int main() {slove();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Thrift学习深入

Thrift学习深入 https://zhuanlan.zhihu.com/p/22934974 https://zhuanlan.zhihu.com/p/26993406 从具体的demo入手,我们需要学习的是三部分 IDLserver端client端一、IDL深入 IDL定义的通用类型有: 基础数据类型结构体容器 list、set、map异常:语法与结构体无异,不过用…

第十二周笔记

微信小程序的自定义事件是指开发者可以自行定义并触发的事件&#xff0c;以实现特定的功能或逻辑。通过自定义事件&#xff0c;开发者可以更灵活地管理小程序的交互和数据流动&#xff0c;提升用户体验和开发效率。下面我将详细讲解微信小程序自定义事件&#xff0c;包括定义、…

容器化部署

目录 docker容器化部署 怎样使用Docker Compose或Kubernetes等容器编排工具来管理和扩展联邦学习系统 使用Docker Compose

【Qnx 】Qnx IPC通信PPS

Qnx IPC通信PPS Qnx自带PPS服务&#xff0c;PPS全称Persistent Publish/Subscribe Service&#xff0c;就是常见的P/S通信模式。 Qnx PPS的通信模式是异步的&#xff0c;Publisher和Subscriber也无需关心对方是否存在。 利用Qnx提供的PPS服务&#xff0c;Publisher可以通知多…

嵌入式进阶——LED呼吸灯(PWM)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 PWM基础概念STC8H芯片PWMA应用PWM配置详解占空比 PWM基础概念 PWM全称是脉宽调制&#xff08;Pulse Width Modulation&#xff09…

Arduino下载与安装(Windows 10)

Arduino下载与安装(Windows 10) 官网 下载安装 打开官网&#xff0c;点击SOFTWARE&#xff0c;进入到软件下载界面&#xff0c;选择Windows 选择JUST DOWNLOAD 在弹出的界面中&#xff0c;填入电子邮件地址&#xff0c;勾选Privacy Policy&#xff0c;点击JUST DOWNLOAD即可 …

深入解析:Element Plus 与 Vite、Nuxt、Laravel 的结合使用

在现代前端开发中&#xff0c;选择合适的工具和框架来提高开发效率和应用性能是至关重要的。 Element-Plus 是一个基于 Vue.js 3.0 的流行 UI组件库&#xff0c;它可以与多种前端和后端框架结合使用&#xff0c;如 Vite、Nuxt 和 Laravel。本文将深入探讨这三者与 Element Plus…

【脚本篇】---spyglass lint脚本

目录结构 sg_lint.tcl &#xff08;顶层&#xff09; #1.source env #date set WORK_HOME . set REPORT_PATH ${WORK_HOME}/reports puts [clock format [clock second] -format "%Y-%m-%d %H:%M:%S"] #2.generate source filelist #3.set top module puts "##…

qt-C++笔记之QThread使用

qt-C笔记之QThread使用 ——2024-05-26 下午 code review! 参考博文&#xff1a; qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 qt-C笔记之QThread使用 文章目录 qt-C笔记之QThread使用一:Qt中几种多线程方法1.1. 使用 QThread 和 Lambda…

ubuntu server 24.04 网络 SSH等基础配置

1 安装参考上一篇: VMware Workstation 虚拟机安装 ubuntu 24.04 server 详细教程 服务器安装图形化界面-CSDN博客 2 网络配置 #安装 sudo apt install net-tools#查看 ifconfig #修改网络配置 sudo vim /etc/netplan/50-cloud-init.yaml network:version: 2ethernets:en…

课时136:变量进阶_变量实践_高级赋值

2 变量进阶 2.1 变量实践 2.1.1 高级赋值 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 所谓的高级赋值&#xff0c;是另外的一种变量值获取方法&#xff0c;这里涉及到更多我们学习之外的一些shell内置变量格式,其实这部分…

飞鸡:从小训练飞行的鸡能飞行吗?为什么野鸡能飞吗?是同一品种吗?今天自由思考

鸡的飞行能力在很大程度上受到其生理结构的限制。尽管鸡有翅膀&#xff0c;但与能够长时间飞行的鸟类相比&#xff0c;鸡的翅膀相对较小&#xff0c;且胸部肌肉较弱。再加上鸡的身体较重&#xff0c;这些因素共同限制了鸡的飞行能力。通常&#xff0c;鸡只能进行短暂的、低空的…

【wiki知识库】01.wiki知识库前后端项目搭建(SpringBoot+Vue3)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 &#x1f33c;环境准备 想要搭建自己的wiki知识库&#xff0c;要提前搭建好自己的开发环境&#xff0c;后端我使用的是SpringBoot&#xff0c;前端使用的是Vue3&#xff0c;采用前后端分离的技术实现。同时使用了Mysql数…

C++ vector,dequeu,list容器中元素的引用失效问题

文章目录 一、std::list不会产生引用失效问题二、std::vector中元素引用失效问题三、std::deque中元素引用失效问题 一、std::list不会产生引用失效问题 在C中&#xff0c;std::list&#xff08;双向链表&#xff09;提供了一种非常灵活的容器类型&#xff0c;其设计使其在插入…

微信小程序的事件对象属性,事件绑定

微信小程序 小程序简介 1 小程序与普通网页开发的区别&#xff1f; 1运行环境的不同&#xff1a;网页运行在浏览器&#xff0c;小程序运行在微信环境&#xff1b; 2.API 不同&#xff1a;小程序无法调用 DOM 和 BOM 的 API&#xff0c;但可以调用微信环境提供的 API&#xff1…

单工无线发射接收系统

1 绪论 随着无线电技术的发展,通讯方式也从传统的有线通讯逐渐转向无线通讯。由于传统的有线传输系统有配线的问题,较不便利,而无线通讯具有成本廉价、建设工程周期短、适应性好、扩展性好、设备维护容易实现等特点,故未来通讯方式将向无线传输系统方向发展。同时,实现系…

mfc140.dll丢失原因和mfc140.dll丢失修复办法分享

mfc140.dll是与微软基础类库&#xff08;Microsoft Foundation Classes, MFC&#xff09;紧密相关的动态链接库&#xff08;DLL&#xff09;文件。MFC是微软为C开发者设计的一个应用程序框架&#xff0c;用于简化Windows应用程序的开发工作。以下是mfc140.dll文件的一些关键属性…

栈的实现(C语言)

文章目录 前言1.栈的概念及结构2.栈的实现3.具体操作3.1.初始化栈(StackInit)和销毁栈(StackDestory)3.2.入栈(StackPush)和出栈(StackPop)3.3.获得栈的个数(StackSize)、获得栈顶元素(StackTop)以及判空(StackEmpty) 前言 前段时间我们学习过了链表和顺序表等相关操作&#x…

go-zero 实战(4)

中间件 在 userapi 项目中引入中间件。go项目中的中间可以处理请求之前和之后的逻辑。 1. 在 userapi/internal目录先创建 middlewares目录&#xff0c;并创建 user.go文件 package middlewaresimport ("github.com/zeromicro/go-zero/core/logx""net/http&q…