news 2026/8/3 2:47:38

题解:P16710 愿望

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
题解:P16710 愿望

结论

对于菊花图:若存在度数为n−1n-1n1的点,则令非中心节点权值依次为0,1,2,…,n−20,1,2,\ldots,n-20,1,2,,n2,中心节点权值为000

对于一般树:令树总异或和为0。给非根点分配互异子树异或和(0,1,…,n−2)(0,1,\dots,n-2)(0,1,,n2),且父子不同(根为0)。DFS从小到大给儿子分配值,遇父值跳过。点权=自身目标值⊕\oplus所有儿子目标值。

推导

我们考虑从子树异或和下手。

对于树TTT,节点iii的值为为aia_iai,任意指定一个点为根rootrootroot

我们定义XiX_iXi为点iii的子树异或和,SSS为整棵树的异或和,题意为对于每一个点iii,由它的任意儿子vvvXvX_vXvS⊕XiS\oplus X_iSXi(即父亲那一块)的集合内的树互不相等。

我们先令S=0S=0S=0,那么父亲那一块值即为XiX_iXi得:

-若iii非根,{Xv∣v∈son⁡(i)}∪{Xi}\{X_v\mid v\in\operatorname{son}(i)\}\cup\{X_i\}{Xvvson(i)}{Xi}中元素互异;

-若iii为根,{Xv∣v∈son⁡(i)}\{X_v\mid v\in\operatorname{son}(i)\}{Xvvson(i)}中元素互异。

那么我们思考如何让XXX满足以上条件,显然可以的得到所有非根节点的值要彼此不同,我们可以使它们恰好覆盖1,2,…,n−11,2,\dots,n-11,2,,n1中的一些数,且父子之间不能相等。(规定Xroot=0X_{root}=0Xroot=0S=0S=0S=0

我们可以发现非根节点有n−1n-1n1个,我们可以用0,1,2,…,n−20,1,2,\dots,n-20,1,2,,n2来分配,来使得值域最小。

对于点iii,由XiX_iXi定义:Xi=ai⊕X_i=a_i\oplusXi=ai所有儿子的XXX得:ai=Xi⊕a_i=X_i\oplusai=Xi所有儿子的XXX

容易证明这种构造方式的最大不会超过2⌈log⁡2n⌉2^{\lceil\log_2{n}\rceil}2log2n(接近于nnn)。

但是当是菊花图时就可以卡到这个上线,可能超过m。

但显然菊花图只用令非中心节点权值依次为0,1,2,…,n−20,1,2,\ldots,n-20,1,2,,n2,中心节点权值为000就能构造出来。

实现

一遍深搜求XXX并且同时算出aaa就行了。

:::success[code]

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,m,a[1000001],deg[1000001];vector<int>g[1000001];voiddfs(intu,intfa,intw){intj=0,s=w;for(intv:g[u]){if(v==fa){continue;}if(j==w&&u!=1){j++;}s^=j;dfs(v,u,j);j++;}a[u]=s;}signedmain(){cin>>n>>m;for(inti=1;i<n;++i){intu,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);deg[u]++,deg[v]++;}intrt=0;for(inti=1;i<=n;++i){if(deg[i]==n-1){rt=i;}}if(rt){intj=0;for(inti=1;i<=n;++i){if(i!=rt){a[i]=j++;}}}else{dfs(1,0,0);}for(inti=1;i<=n;++i){cout<<a[i]<<"";}}

:::

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/3 2:45:36

从零构建星际争霸AI:BWAPI开发环境搭建与核心机制解析

1. 项目概述&#xff1a;为什么现在依然是研究BWAPI的好时机&#xff1f;如果你对游戏AI、实时决策或者多智能体系统感兴趣&#xff0c;但又觉得从零搭建一个复杂的模拟环境门槛太高&#xff0c;那么BWAPI绝对是一个被低估的宝藏。BWAPI&#xff0c;全称Brood War Application …

作者头像 李华
网站建设 2026/8/3 2:45:35

零基础实战AI编程:从Cursor到Claude Code,30分钟跑通首个代码生成案例

这类工具最值得先看的不是功能列表&#xff0c;而是能不能在普通环境里稳定跑起来&#xff0c;以及新手能不能在半小时内跑通第一个例子。Vibe Coding、Claude Code、Codex、Cursor&#xff0c;这几个名字最近经常一起出现&#xff0c;很多人搞不清它们的关系&#xff0c;也不知…

作者头像 李华
网站建设 2026/8/3 2:42:22

从零详解多层感知机MLP:原理、代码实现与实战调优

1. 项目概述&#xff1a;从“感知”到“网络”的跨越如果你刚开始接触深度学习&#xff0c;面对“卷积神经网络”、“循环神经网络”这些名词感到头大&#xff0c;那我建议你从“多层感知机”开始。它听起来可能有点学术&#xff0c;但本质上&#xff0c;它是所有现代深度神经网…

作者头像 李华
网站建设 2026/8/3 2:42:16

模拟退火算法:原理、实现与工业应用

1. 从打铁到算法&#xff1a;模拟退火的前世今生记得小时候看铁匠打铁&#xff0c;老师傅会把烧红的铁块反复加热、捶打、冷却。这个看似简单的过程&#xff0c;其实暗藏玄机——通过控制温度变化&#xff0c;金属内部的晶体结构会逐渐趋于完美。这种工艺启发了我后来接触到的模…

作者头像 李华
网站建设 2026/8/3 2:36:27

Android网络请求生命周期管理:LiveData与Retrofit请求取消的三种方案

1. 项目缘起&#xff1a;一个被忽视的“内存泄漏”问题那天下午&#xff0c;测试同事拿着手机跑过来&#xff0c;指着屏幕上那个加载了快一分钟还没刷出数据的列表页问我&#xff1a;“这个页面是不是有内存泄漏&#xff1f;我反复进出几次&#xff0c;感觉手机越来越卡&#x…

作者头像 李华
网站建设 2026/8/3 2:30:40

XIAO ESP32-C5 Zigbee开发实战:从环境搭建到双核通信全解析

1. 从ESP32-C5到Zigbee&#xff1a;为什么是它&#xff1f;如果你最近在关注物联网开发板&#xff0c;尤其是那些主打无线连接和低功耗的&#xff0c;那么Seeed Studio的XIAO ESP32-C5这个名字大概率已经出现在你的视野里了。它最吸引人的地方&#xff0c;就是把一颗支持Wi-Fi …

作者头像 李华