AGC009D Uninity

UNINIT - 创建一个未初始化的变量(像 ZEROS 但更快):UNINIT 类似于 ZEROS,除了 UNINIT 返回未初始化的值而不是零值。-matlab开发 UNINIT 与 ZEROS 函数非常相似,不同之处在于 UNINIT 返回一个未初始化的数组而不是一个填充零的数组。 因此,对于大型数组,UNINIT 比 ZEROS 函数更快。 由于返回变量未初始化,因此用户在使用元素之前必须小心地为元素赋值。 UNINIT 对于数组的预分配很有用,在这种情况下,您知道在使用元素之前将为其分配值。 语法(与 ZEROS 函数几乎相同) B = uninit B = uninit(n) B = uninit(m,n) B = uninit([mn]) B = uninit(m,n,p,...) B = uninit([mnp ...]) B = uninit(大小(A)) B = uninit(m, n,...,classname) B = uninit([m,n,...],classname) B = uninit(m, n,...,complex 立即下载

传送门

题意:
我们定义一棵树的uninity值:
只有一个点的树的uninity值为0;
假设有若干(可以是0)棵uninity值为k的树和一个点v,每棵树各选一个点连到v,那么得到的树的uninity值为k+1。
显然一棵uninity值为k的树,它的uninity值也可以是k+1,k+2,…
给出一棵有N个点的树,求最小的uninity值。

题解:
我们给每个点赋一个值。在构造一棵uninity值为k的树时,令点v的权值为k。
那么问题转化为:使两个权值相等的点的路径上有一个点的权值大于它们的权值,最小化最大的权值。利用点分治可以得到答案不超过log(n)。
那么可以直接存下每个点下面每个权值的访问次数,然后选取最小的使子树合法的权值。

代码:

#include<cstdio>
#include<algorithm>
#define maxn 100005
using namespace std;
int n,ans,f[maxn][30];
struct node { int v; node *nxt; } edge[maxn*2],*head[maxn],*ncnt;
void addedge(int u,int v)
{
	ncnt++;
	ncnt->v=v,ncnt->nxt=head[u];
	head[u]=ncnt;
}
void dfs(int u,int fa)
{
	for(node *p=head[u];p;p=p->nxt)
	{
		int v=p->v;
		if(v==fa) continue;
		dfs(v,u); 
		for(int i=0;i<=20;i++) f[u][i]+=f[v][i];
	}
	int p=0;
	for(int i=20;i>=0;i--)
		if(f[u][i]>1) { p=i+1; break; }
	while(f[u][p]) p++;
	f[u][p]++;
	for(int i=0;i<p;i++) f[u][i]=0;
	ans=max(ans,p);
}
int main()
{
	ncnt=&edge[0];
	scanf("%d",&n);
	for(int i=1;i<n;i++)
	{
		int u,v;
		scanf("%d%d",&u,&v);
		addedge(u,v); addedge(v,u);
	}
	dfs(1,0);
	printf("%d\n",ans);
}

RuoYi项目适配达梦数据库(二) RuoYi项目,代码生成模块的达梦数据库适配。 阅读详情

相关推荐

避坑指南:PyTorch ConvLSTM参数配置的那些坑(hidden_dim/kernel_size/num_layers详解)

本文深度解析PyTorch ConvLSTM中hidden_dim、kernel_size和num_layers三大核心参数的配置技巧,提供实战指南和性能优化建议。通过实验数据揭示参数组合的内在规律,帮助开发者避免常见配置陷阱,提升时空序列建模效果。特别针对视频预测、气象预报等应用场景,给出黄金参数组合方案和调试技巧。

vv45678的博客 702

【图论】AGC009D Uninity

分析: 首先,点分治的姿势告诉我们,这题答案的上限是log(n)log(n)log(n),但显然这不是最优解。 但我们可以借助点分治得到一个结论: 设每个点在点分治树中的深度为kik_iki​,那么对于任意两个深度相同的点,它们的路径上,深度最大的点一定大于kik_iki​。(就是第一次把它们分成两块的重心点) 有了这个性质,我们可以得到一个优秀的贪心算法: 对每个点x,考虑对它进行标号: 如果在...

氧化钠的博客 513

百元DIY手机荧光计:低成本荧光检测平台搭建与实战

荧光检测是一种基于物质受特定波长光激发后发射更长波长荧光的分析技术,其核心原理在于光与物质的相互作用。通过选择性激发与检测,该技术能实现对痕量物质的高灵敏度、高特异性定量分析,在生物医学、环境监测和食品安全等领域具有重要价值。传统荧光分光光度计虽精度高,但成本昂贵、体积庞大且操作复杂,限制了其在现场快检和普及教育中的应用。本文聚焦于如何利用智能手机的高性能摄像头和处理器,结合低成本光学滤光片和LED光源,构建一个便携、经济的DIY荧光检测平台。该方案通过简化光路设计,采用带通滤光片进行波长选择,并利用图像处

weixin_34194829的博客 307

【CAN通信】Can Driver模块详细介绍

AUTOSAR架构下Can Driver详细介绍

qq_36056498的博客 1万+

第四节、C# 上位机面向对象编程详解(工控硬件继承实战版)

继承核心价值:在 C# 上位机工控开发中,继承的核心是通用逻辑复用与接口统一,将所有硬件的通用属性 / 方法封装到抽象基类,子类只需实现独有逻辑,大幅减少冗余代码。基类设计要点:优先使用抽象基类,合理分配访问修饰符(privateprotectedpublic),定义通用事件与虚方法,提供资源释放机制,兼顾复用性与扩展性。子类设计要点:通过: base()调用基类构造函数,强制实现抽象方法(保证接口统一),选择性重写虚方法(实现独有逻辑),复用基类的protected成员。多设备管理。

kylezhao2019的博客 787

Dobot Magician机械臂二次开发指南:如何利用Python脚本和I/O接口实现自动化任务

本文详细介绍了Dobot Magician机械臂的二次开发方法,重点讲解如何通过Python脚本和I/O接口实现高级自动化任务。内容包括开发环境搭建、运动控制API解析、I/O接口应用以及典型场景实现,帮助开发者充分发挥Dobot Magician的潜力,适用于工业自动化、教育科研等领域。

weixin_26968079的博客 267

【思维】【贪心】AGC 009 D - Uninity

题意 我们定义一棵树的uninity值: 只有一个点的树的uninity值为0; 假设有若干(可以是0)棵uninity值为k的树和一个点v,每棵树各选一个点连到v,那么得到的树的uninity值为k+1。 显然一棵uninity值为k的树,它的uninity值也可以是k+1,k+2,… 给出一棵有N个点的树,求最小的 uninity值。 思路 为了方便表示,将题目中的点 v 赋上权值为 k+1 ...

G20202501的博客 352

PCL学习笔记(四)——点云曲面重建

文章目录一、凸包算法二、 单纯的点云数据固然很好,但仅仅是点的话仍是不够的,因为这不利于我们后续对实体对象的渲染与各种应用,如计算实体的表面积、体积等等,所以这就需要我们对实体进行点云的曲面重建。 一、凸包算法 在计算机图形学中,凸包是指在任意维空间中包含某一有限点集P的最小凸集,它由凸包顶点构成,在二维上其表现形式为一个凸多边形,而在三维上则表现为一个凸多面体。在二维层面上来讲,最常用的凸包算法有Graham扫描法和Jarvis卷包裹法,但前者并不适用于三维层面,后者倒是可以扩展到三维。除此之外,在

dayuhaitang1的博客 6912

类的基本构造

class Tmp { public: Tmp() {init();} ~Tmp() {uninit();} public: void init(); void uninit(); };将类的属性的初始化和释放分别放在init和uninit方法中进行处理。这样方便进行对象的复用。

388

通信原理 | CRC循环冗余校验码(最简介明了的原理和matlab程序)

异或运算: 多项式: CRC校验中用到的除数,是由多项式的各项系数组成的,如下所示: 没有的项系数为0,比如:x5次方、x3次方下一步,在原数据串的末端加“0”0的数量由多项式决定具体来说,多项式的阶数是多少就加几个0 具体操作: 现在,我们有了除数,也有了处理过的数据串,如下所示: 就可以开始计算校验和 了将数据串第一个1与除数左对齐,按位进行异或操作: 将未处理的数据搬下来作为新的数据,重复操作: 将新的数据串第一个1与除数左对齐,再重复按位异或操作: 如此循环,直到所有数据都处理过

若北辰 2357

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

算法大师! 1234

[AtCoder Grand Contest 009] D: Uninity (agc009D)

原题链接 https://agc009.contest.atcoder.jp/tasks/agc009_d Description 给你一棵n个节点的树 你需要找到一种点分治方案,使得点分树的深度最小,输出这个最小深度(根的深度为0) n&lt;=100000 Solution 我们将每个点标号,表示这个点在点分树中的深度 有性质:两个标号相同的点之间的路径上一定有一个标号...

Never give in. 453

DeepSeek 赋能招投标全流程智能化:多模态解析、知识图谱与投标文件自动生成实战指南(附完整代码与行业案例)

摘要:本文深入探讨DeepSeek技术在招投标领域的全流程智能化应用,通过整合自然语言处理(NLP)、多模态解析、知识图谱等核心技术,实现招标文件智能解析与投标文件自动生成。文中详细解析DeepSeek-R1模型的多模态处理机制、动态知识图谱构建方法及智能模板填充算法,通过完整代码实现展示技术细节。结合广某资源交易平台、山西XX"XX云"等典型案例,验证技术方案在提升招投标效率、降低人为错误方面的显著效果。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1463

Atcoder AGC009D : Uninity

传送门 题解: 问题等价于给每个点分配权值,满足两个相同权值的点路径上一定有权值大于他们的点。 可以证明从叶子节点从下往上贪心选取合法的最小点,最终一定是最优解。于是我们只用从小到大枚举值判断合法性即可。而点分治保证了最大为O(logn)O(log⁡n)O(\log n),我们只需要记录子树中到根还没有满足限制的点有哪些,然后就可以转移了。 结合位运算,可做到O(n)O(n)O(n)。 ...

DZYO的博客 357

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[AGC009D]Uninity

是结论题但又不完全是;我是垃圾但又不完全是(还有一些白痴的成分)。

七代目鸽影 370

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

[agc009d]Uninity

题目大意 请你确定一种点分治策略,使得点分树的深度最小。 n&lt;=1e5 解题思路 根据原题面,定义一个点x的“海胆值”f[x]为max(f[son])+1,son是x在点分树上的儿子。 根据一般点分治,我们可以发现f最大是O(logn)级别的。 还是不好做,再观察一下其他性质。 考虑两个点x,y,其中f[x]=f[y],那么在原树中,x到y的路径必然存在点u,满足f[u]&...

ZLTJohn的博客 547

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【AGC 009D】Uninity

Description 给定一棵树,求在树上随机点分治所有可能情况中,树可能的最小的深度是多少? N&lt;=10^5 Analysis 首先答案不超过log,因为直接点分治就是log 对于每个点定一个标号,表示点分树上它的子树的深度。 那么任意一种合法的标号,都可以对应一种策略的点分治 怎样的标号是合法的呢?对于两个标号相同的点,它们路径上必须要存在一个标号比它们大的点,若存在我们...

LYD729 349

计算机408考研DMA方式详解:从I/O控制原理到真题计算与工程实践

在计算机组成原理中,I/O设备与主机之间的信息传送是核心议题。程序查询和中断方式虽能完成数据交换,但CPU干预度高,难以满足高速大批量传输需求。DMA(直接存储器访问)通过专用控制器接管总线,实现设备与内存间的直接数据搬运,仅在传送前后需要CPU参与,显著提升系统效率。这一机制广泛应用于磁盘、网卡及嵌入式外设驱动中。理解DMA控制器的组成、三种总线使用方式及传送流程,是掌握计算机408考研I/O系统考点的关键,也是分析真题计算与解决工程配置问题的基础。

weixin_34268843的博客 484

【AtCoder】【AGC009D】Uninity

Description 给出一棵树,要求确认一种点分治策略,使得点分树的深度最小。 Solution 显然,答案的上界为log(然并卵)。 我们先定义点权,一个点的点权为它在点分树上的深度, 显然,一个方案合法,只要保证两个点权相同的点之间存在一个点权比它们都小的点, 保证这个条件的最小答案即为最后答案; 每个点x记录一个二进制,第i位表示当前子树中,是否存在一个点权为i的点,它到x...

595

[AGC009D Uninity] [建模+贪心]

这题好神啊,就是没想到还可以这样做…… 问题就是将树进行点分治,最小深度是多少。显然答案的上界是logn,但是具体是多少呢? 尝试了若干贪心策略,什么直径啦,什么点数啦……好像都有反例,或者根本不知道对不对。结果看了题解才知道可以换成另一种问题去做:实际上就是给树填入数字(数字就是题目中的那个等级),需要保证两个相同数字的节点间的路径上至少存在一个比它们更大的数字,问最大的数字最小是多少。 ...

Orzage的博客 382

AT2293-[AGC009D] Uninity【贪心,状压】

正题 题目链接:https://www.luogu.com.cn/problem/AT2293 题目大意 给出一棵树,求它一棵点分树的最小深度。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 点分树的做法是直接找重心,但是两个重心我们很难确定找哪个,所以这个方法行不通。 但是这样我们大概能确定答案的上界是log⁡n\log nlogn级别的。考虑我们记每个点的点分子树深度did_idi​,那么did_idi​肯定满足对于一对深度相同的(x,y)(x,y)(x,y),它们的路径上

QuantAsk 402

AT2293 [AGC009D] Uninity(贪心、状压)

贪心

BUG_Creater_jie的博客 310

AT_agc009_d Uninity

【代码】AT_agc009_d Uninity。

weixin_44021857的博客 113

AtCoder Grand Contest 009 D - Uninity 贪心

题意 给出一棵树,求这棵树的所有点分树中,深度最小的是多少。每次分治中心可以任意选择。 n 分析 一开始就猜会不会每次找重心就是深度最小的,然而并不是。 如果我们对点分树的每个点标号,标号为其子树深度。 显然有两个标号均为k的点,其路径上至少有一个点的标号大于k。 反过来,若我们得到了这样一组满足条件的标号,就可以得到一棵合法的点分树。 我们可以先定一个根,然后从下往上进行标号

beginend 394

AtCoder Grand Contest 009 D:Uninity

题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_d 题目翻译 定义只有一个点的树权值为\(0\),若干棵(可以是\(0\)棵)权值为\(k\)的树任选一个点向一个单独的结点\(v\)连边,新生成的树的权值为\(k+1\)。显然对于一棵树他的权值是一个范围\([x,inf)\),求给定的树的权值范围的最小值。\(n\leqslant...

aga28832的博客 151

在keil MDK中定义非初始化(noini)变量

具体 可以参考ARM官方资料:ARM: Uninialized Variables Get Initialized 这里是对上述资料的总结, 该方法已在项目中得到验证。 方法: 分散加载文件如下: 定义了一个 UNINIT 段,并指定它不允许被初始化。 LR_IROM1 0x08000000 0x00080000 { ; load region size_region ER_IROM...

qq_20163075的博客 2250
上一篇: AGC009C Division into Two
下一篇: AGC009B Tournament
dogeding
博客等级 码龄10年 31粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值