当前位置: 首页 > news >正文

【图论】Linova and Kingdom—CF1336A

Linova and Kingdom—CF1336A
参考文章

思路

1 1 1 号节点为根节点。很容易想到,工业城市在树的下边,旅游城市在树的上边。具体来说,如果节点 u u u 是工业城市,那么它的子树的所有节点一定都是工业城市;如果节点 u u u 是旅游城市,那么它到根节点的路径上的所有城市都是旅游城市。

我们先把所有城市认定为工业城市,然后在与工业城市直接相连的旅游城市中选出“将其变为工业城市提供的贡献值”最大的城市,并将其变为工业城市。

城市的贡献的计算方法:当前点的子树的节点数 - (当前点的深度 - 1)。

可以利用用优先队列来选出最佳的城市,然后再将新产生的满足条件的城市压入队列。

由于我们选出的“贡献点最大的城市”的前提是这个点(设为 w w w 点)的子树上所有点都是工业城市,并且与根节点路径上的所有点都是旅游城市。那么如果后边的操作把 w w w 点的子节点给变成了旅游城市,那么不就不满足这个条件了吗?

请认真考虑我们是如何计算计算一个边界处的旅游城市如果变为工业城市后可以提供的贡献的:当前点的子树的节点数 - (当前点的深度 - 1)。 w w w 的贡献是相对于“ w w w 点及 w w w 点到根节点路径上都是旅游城市的条件”,也就是这种计算贡献的方法考虑了上一个状态,并非独立计算某一个点的贡献。

C o d e Code Code

#include <bits/stdc++.h>
#define int long long
#define sz(a) ((int)a.size())
#define all(a) a.begin(), a.end()
using namespace std;
using PII = pair<int, int>;
using i128 = __int128;
const int N = 2e5 + 10;int n, k;
int contri[N];void solve() {cin >> n >> k;vector<vector<int>> g(n + 1);for (int i = 1; i <= n - 1; i ++) {int a, b; cin >> a >> b;g[a].push_back(b);g[b].push_back(a);}// 计算深度和子树中节点数量vector<int> deep(n + 1, -1), son_num(n + 1);auto dfs = [&] (auto dfs, int u) ->int {int sum = 1;for (auto v : g[u]) {if (deep[v] == -1) {deep[v] = deep[u] + 1;sum += dfs(dfs, v);}}son_num[u] = sum;return sum;};deep[1] = 1;dfs(dfs, 1);// 计算每个点的贡献for (int i = 1; i <= n; i ++) {son_num[i] --;contri[i] = son_num[i] - (deep[i] - 1);}int res = 0;k = n - k;vector<int> st(n + 1, 0); // 标记是否为旅游城市/已经来过priority_queue<PII, vector<PII>> q; // [贡献,节点] 降序优先队列q.emplace(contri[1], 1);while (not q.empty() && k --) {auto [f, s] = q.top(); q.pop();st[s] = 1;res += f;for (auto v : g[s]) {if (not st[v]) {q.emplace(contri[v], v);}}}cout << "         ";cout << res << "\n";
}signed main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int T = 1;
//	cin >> T; cin.get();while (T --) solve();return 0;
}

相关文章:

【图论】Linova and Kingdom—CF1336A

Linova and Kingdom—CF1336A 参考文章 思路 1 1 1 号节点为根节点。很容易想到&#xff0c;工业城市在树的下边&#xff0c;旅游城市在树的上边。具体来说&#xff0c;如果节点 u u u 是工业城市&#xff0c;那么它的子树的所有节点一定都是工业城市&#xff1b;如果节点 u…...

【红日靶场】vulnstack3-完整渗透过程

系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 文章目录 系列文章目录基本信息环境配置开始渗透信息收集暴力破解漏洞利用绕过内网信息收集尝试上线msf上线msf横向移动msf 传达会话给cs横向到域…...

物联网通信技术课程作业资料(TPUNB技术)

参考内容 TPUNB无线通信技术 - 技象科技 (techphant.cn) 技象科技CTO郑凛&#xff1a;用最好的物联网服务最多的人 | 了不起的创变者_技术_通信_团队 (sohu.com) LPWAN技术融合使用大势之下&#xff0c;TPUNB奔跑的一年-IOTE物联网展 (baidu.com) 院士认可国际首创&#xf…...

[开源]研发管理项目,支持从需求到代码发布全过程全生命周期管理

一、开源项目简介 neatlogic-rdm支持从需求到代码发布全过程覆盖。具备需求管理、缺陷追踪、测试计划、测试用例、报表仪表板等功能&#xff0c;支持关联外部代码库如GitLab、GitHub等。个性化的属性配置和状态流转控制&#xff0c;能帮助用户管理不同类型项目。 二、开源协议…...

一文生成猫眼电影热榜词云

1.爬取猫眼电影热榜数据 此次爬取的是电影票房的热榜电影名称&#xff0c;具体网站网址为猫眼电影热榜&#xff0c;经过实验观察后发现&#xff0c;此处的数据是通过ajax异步加载的&#xff0c;如果不相信可以使用request对当前网站网址发送请求&#xff0c;会发现无法获取电影…...

监控脚本展示

需求&#xff1a; 监控SVQC&#xff0c;SVCD&#xff0c;FHTC&#xff0c;FHQC&#xff0c;FHCD文件的生成 监控服务器&#xff1a;10.10.3.56 监控路径&#xff1a;/data/app/datafile/ftp/qdttec/10000002/download/yyyyMMdd/* 监控时间&#xff1a;每天7点开始&#xff0c;2…...

【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)

目录 前言 五、模块化程序设计——函数 5.1 计算三角形的重心 5.2 函数 5.2.1 函数定义 5.2.2 函数调用 a. 函数调用的形式和过程 b. 参数传递 值传递 指针传递 c. 函数结果返回 5.2.3 函数原型&#xff08;先调用后定义&#xff09; 5.3 程序设计实例 5.3.1 打印…...

Unity实现设计模式——迭代器模式

Unity实现设计模式——迭代器模式 迭代器模式是一种行为型设计模式&#xff0c;它提供了一种统一的方式来访问集合对象中的元素&#xff0c;而不是暴露集合内部的表示方式。简单地说&#xff0c;就是将遍历集合的责任封装到一个单独的对象中&#xff0c;我们可以按照特定的方式…...

【数据结构与算法】之“堆”介绍

目录 堆的基本存储 一、概念及其介绍 二、适用说明 三、结构图示 堆的 shift up 堆的 shift down 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 优化堆排序 索引堆及其优化 一、概念及其介绍 二、适用说明 三、结构图示 堆的基本存储 一、概念及其介…...

ncnn Fatal signal 11 (SIGSEGV) 使用GPU加速崩溃

如果你的报错堆栈中包含以下信息,其中的关键信息是 anon:dalvik-classes2.dex extracted in memory Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x3c in tid 8619 (eplabv3plusncnn), pid 8619 () 2023-10-07 15:48:31.395 9793-9793 DEBUG …...

计算机考研 | 2018年 | 计算机组成原理真题

文章目录 【计算机组成原理2018年真题44题-15分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2018年真题45题-8分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2018年真题44题-15分】 某计算机采用页…...

用Configuration注解的方式写一个java过滤器的详细实例?

在Java中&#xff0c;可以使用Configuration注解和Spring框架来创建和配置过滤器。下面是一个详细的示例&#xff1a; 首先&#xff0c;创建一个实现javax.servlet.Filter接口的过滤器类&#xff0c;例如MyFilter&#xff1a; import javax.servlet.*; import java.io.IOExce…...

基于Springboot实现旧物置换网站平台演示【项目源码+论文说明】分享

基于Springboot实现旧物置换网站平台演示 摘要 随着时代在一步一步在进步&#xff0c;旧物也成人们的烦恼&#xff0c;许多平台网站都在推广自已的产品像天猫、咸鱼、京东。所以开发出一套关于旧物置换网站成为必需。旧物置换网站主要是借助计算机&#xff0c;通过对用户进行管…...

想要精通算法和SQL的成长之路 - 存在重复元素

想要精通算法和SQL的成长之路 - 存在重复元素 前言一. 存在重复元素II二. 存在重复元素III2.1 基于红黑树增删改查 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 存在重复元素II 原题链接 思路&#xff1a; 我们用HashSet存储元素&#xff0c;做到去重的效果。同时存储…...

使用华为eNSP组网试验⑸-访问控制

今天练习使用华为sNSP模拟网络设备上的访问控制&#xff0c;这样的操作我经常在华为的S7706、S5720、S5735或者H3C的S5500、S5130、S7706上进行&#xff0c;在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作&#xff0c;只是在真机上操作一般比较谨慎&#xff…...

iPhone苹果手机闹钟智能跳过节假日怎么设置?

国内绝大多数的手机用户使用的操作系统只有三个&#xff0c;安卓、鸿蒙和苹果的ios。而iPhone苹果手机的忠实用户是非常多的&#xff0c;所以日积月累中用户数量也就非常庞大&#xff0c;并且相当一部分用户都是上班族。而工作忙碌的上班族因为事情比较多&#xff0c;为了避免自…...

TenDB Cluster 简介

文章目录 1.简介2.TSpider3.TenDB4.Tdbctl5.TenDB Cluster Operator参考文献 1.简介 TenDB Cluster 是腾讯游戏 CROS DBA 团队提供的 MySQL 分布式关系型数据库解决方案。主要特点包括&#xff1a;透明分库分表、高可用的 MySQL 集群服务&#xff0c;透明及在线的扩容及缩容&a…...

【刷题笔记10.6】LeetCode:翻转二叉树

LeetCode&#xff1a;翻转二叉树 一、题目描述 给你一颗二叉树的根节点root&#xff0c;翻转这颗二叉树&#xff0c;并返回其根节点。 二、分析 我们在做二叉树题目时候&#xff0c;第一想到的应该是用 递归 来解决。 仔细看下题目的 输入 和 输出&#xff0c;输出的左右…...

【高阶数据结构】图详解第一篇:图的基本概念及其存储结构(邻接矩阵和邻接表)

文章目录 1. 图的基本概念1.1 什么是图1.2 有向图和无向图1.3 完全图1.4 邻接顶点1.5 顶点的度1.6 路径1.7 路径长度1.8 简单路径与回路1.9 子图1.10 连通图1.11 强连通图1.12 生成树 2. 图的存储结构2.1 邻接矩阵2.2 邻接矩阵代码实现结构定义构造函数添加边打印图测试 2.3 邻…...

IPV4跟IPV6的区别

如今互联网快速发展ipv4已经满足不了现在的需求&#xff0c;那么这时候就需要用更大的地址空间来代替&#xff0c;这时候ipv6就可以满足这一需求&#xff0c;相比ipv4它有更大的地址空间可供使用。下面我将分享一下有何区别。 IPv4与IPv6之间的区别: 1、地址长度的区别:IPv4具…...

从会议录音到字幕生成:基于FunASR和SpringBoot搭建一个轻量级语音处理中台

从会议录音到字幕生成&#xff1a;基于FunASR和SpringBoot搭建轻量级语音处理中台 每周例会后&#xff0c;行政小张总要花两小时反复听录音整理纪要。市场部的跨国会议录音&#xff0c;技术团队的头脑风暴存档&#xff0c;管理层战略讨论的逐字记录——这些音频文件堆积在共享…...

颠覆3种时间黑洞:用Obsidian日历重构你的工作流

颠覆3种时间黑洞&#xff1a;用Obsidian日历重构你的工作流 【免费下载链接】obsidian-full-calendar Keep events and manage your calendar alongside all your other notes in your Obsidian Vault. 项目地址: https://gitcode.com/gh_mirrors/obs/obsidian-full-calendar…...

小程序签名组件避坑指南:从米字格绘制到图片生成的完整流程

小程序签名组件开发实战&#xff1a;从米字格绘制到图片生成的深度解析 在小程序开发中&#xff0c;签名功能的需求日益增多&#xff0c;无论是电子合同签署、教育类应用的字帖练习&#xff0c;还是个性化签名设计&#xff0c;都需要一个稳定高效的签名组件。本文将深入探讨如何…...

WordPress建站避坑指南:Ubuntu服务器常见权限问题与安全配置

WordPress建站避坑指南&#xff1a;Ubuntu服务器常见权限问题与安全配置 引言&#xff1a;为什么你的WordPress网站总出问题&#xff1f; 每次看到新手开发者兴奋地宣布"我的WordPress网站上线了"&#xff0c;我都忍不住想问&#xff1a;你真的检查过文件权限了吗&am…...

Wan2.2-I2V-A14B与数据库联动:自动化生成电商商品动态详情页视频

Wan2.2-I2V-A14B与数据库联动&#xff1a;自动化生成电商商品动态详情页视频 1. 电商视频制作的痛点与机遇 电商平台每天都有大量新品上架&#xff0c;传统的商品详情页视频制作方式面临巨大挑战。一个中型电商平台每月可能新增上千款商品&#xff0c;如果每款商品都需要人工…...

CLIP-GmP-ViT-L-14与YOLOv11结合:实现目标检测后的细粒度语义描述

CLIP-GmP-ViT-L-14与YOLOv11结合&#xff1a;实现目标检测后的细粒度语义描述 你有没有遇到过这种情况&#xff1f;一个智能摄像头告诉你“画面里有人”&#xff0c;但你更想知道的是“画面里有一个穿着蓝色外套、正在打电话的年轻人”。或者&#xff0c;一个货架分析系统告诉…...

南北阁4.1-3B WebUI代码实例:TextIteratorStreamer多线程流式实现解析

南北阁4.1-3B WebUI代码实例&#xff1a;TextIteratorStreamer多线程流式实现解析 今天咱们来聊聊一个特别有意思的项目——一个为南北阁4.1-3B模型量身定做的Web交互界面。如果你用过Streamlit&#xff0c;可能会觉得它的界面有点“官方”&#xff0c;布局也比较固定。但这个…...

Unity WebGL输入优化:跨平台文本输入解决方案的技术突破

Unity WebGL输入优化&#xff1a;跨平台文本输入解决方案的技术突破 【免费下载链接】WebGLInput IME for Unity WebGL 项目地址: https://gitcode.com/gh_mirrors/we/WebGLInput 在Unity WebGL应用的开发过程中&#xff0c;文本输入功能一直是开发者面临的核心挑战。传…...

家庭实验室:树莓派控制OpenClaw调用远程Qwen3-32B

家庭实验室&#xff1a;树莓派控制OpenClaw调用远程Qwen3-32B 1. 为什么选择树莓派OpenClaw组合 去年冬天&#xff0c;我在整理家庭实验室设备时发现一个闲置的树莓派4B。这台信用卡大小的电脑曾经用来跑Home Assistant控制智能家居&#xff0c;但后来换了NUC主机就被束之高阁…...

Python中的生成器和迭代器:原理与实践

Python中的生成器和迭代器&#xff1a;原理与实践 一、背景与动机 在Python编程中&#xff0c;处理大量数据时&#xff0c;内存管理是一个常见的挑战。生成器&#xff08;Generators&#xff09;和迭代器&#xff08;Iterators&#xff09;为解决这一问题提供了一种高效的方式&…...