PKUSC2019 D2T2
PKUSC2019 D2T2
把n(n<=100)的树(无边权)放在m维空间上(坐标都是整点),使得任意两个点的曼哈顿距离都是原树上的距离
求最小的m,并给出构造方案
性质好题,巧妙构造题。
原树上相邻的边,一定是某一维+1或者-1,其他不变
先确定一个根,不妨给每个边一个+i或者-i,表示这个边指向的儿子从父亲过来,增加了第i个基向量或者减去
以+(1,0,0,0...),-(1,0,0,0...)为例(简称+1,-1)
发现,两个点(x,y)曼哈顿距离可能比树上的实际距离小,这一定是因为,(x,y)路径上的某一次向量改变相互消去了!
结论一:
+1或者-1一定是直上直下的链(可以不连续),否则出现
那么(x,y)的距离,实际上两个+1减法减掉了。
结论二:
+1和-1不能存在祖先后代关系
否则出现:
那么(x,y)的距离还是把+1和-1做和消掉了。
但是,为了保证m最小,每一维的应当充分利用。
所以+1,-1连续的链一定不劣。
如果叶子个数为k,m最小值为k/2上取整。
每个叶子头上是+1,-1,+i,-i,+j,-j。。。。
构造可以达到最小值:
如果暴力把基向量往上填的话,会出现这样的情况:
问号只能填新的维度,这样就浪费了。
最优情况显然是:
所以,相同维度的叶子,往上爬,要么不相遇(被之前维度隔断),要么只能在根节点相遇。
令重心(这里重心定义为,任何一个子树的叶子个数<=k/2)为根,i叶子和i+k/2叶子配对。
这样,相同维度的叶子,一定来自根的不同子树,一定合法!
PKUSC2019 D2T2的更多相关文章
- PKUSC2019 改题记录
PKUSC2019 改题记录 我真的是个sb... 警告:不一定是对的... D1T1 有一个国家由\(n\)个村庄组成,每个村庄有一个人.对每个\(i\in[1,n-1],\)第\(i\)个村庄到第 ...
- 4560 NOIP2015 D2T2 子串
4560 NOIP2015 D2T2 子串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有两 ...
- Codevs 4560 NOIP2015 D2T2 子串
> 4560 NOIP2015 D2T2 子串 时间限制: 1 s 空间限制: 128000 KB 题目等级:黄金 Gold 题目描述 Description 有两个仅包含小写英文字母的字符串A ...
- [NOIP2018 TG D2T2]填数游戏
题目大意:$NOIP2018\;TG\;D2T2$ 题解:在skip2004的博客基础上修改的,也是暴搜. 说明一下把vector改成数组并不可以通过此题,记录. 结论:在$m>n+1$时答案为 ...
- 4560 NOIP2015 D2T2 子串 code vs
4560 NOIP2015 D2T2 子串 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有两个仅包含小写 ...
- 嵊州D2T2 八月惊魂 全排列 next_permutation()
嵊州D2T2 八月惊魂 这是一个远古时期的秘密,至今已无人关心. 这个世界的每个时代可以和一个 1 ∼ n 的排列一一对应. 时代越早,所对应的排列字典序就越小. 我们知道,公爵已经是 m 个时代前的 ...
- pkusc2019游记
Day0 早上 6:55 的高铁,6 点就起了,好困呜呜呜 去的路上跟 memset0 坐一起,突然发现雀魂还没停服,先雀了一局(居然拿了个 1 位还飞了一个人),与此同时 memset0 切了一道毒 ...
- PKUSC2019滚粗记
PKUSC2019滚粗记 Day -INF 在\(\text{APIO}\)时得知省选考崩的自己居然能参加\(\text{SC}\),真是非常意外啊. Day 0 上午机房充斥着放假的气息,居然还成功 ...
- PKUSC2019题解
$D1T1$:$n$个村庄,第$i$个村庄的人要去第$p_i$个村庄(保证$p_i$为排列),每次可以将相邻两个村庄的人位置交换直到所有人都到达目的地.再给定一个长为$n-1$的排列$a$,表示第$i ...
随机推荐
- 火狐不支持webp格式的图片
<!DOCTYPE html> <html lang="en"> <style> ul{list-style: none;} li{float: ...
- 与960 Grid System相关的那些问题
为什么是960px? 一直以来,网页设计师都希望寻找一个理想的页面宽度值,既能适应大部分屏幕,又尽可能的在一行显示更多的信息. 我们首先会考虑的是全屏自适应,但这并非一个好的解决方案.一方面,需要做一 ...
- capserjs-prototype(中)
evaluateOrDie() 具体样式: evaluateOrDie(Function fn[, String message, int status]) Evaluates an expressi ...
- C++ static静态成员变量在类中仅仅是声明
今天写代码时看到: 图1的3个静态成员变量在类中仅仅是声明,没有定义以及分配内存:必须在类外,图中就是cpp中,定义分配内存,才能使用
- Ubuntu16.04下安装Visual Studio Code
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get update sudo apt-get install ubun ...
- MQTT--笔记
一.MQTT协议基本介绍 1.1.MQTT是什么? MQTT,全称为Message Queue Telemetry Transport.在1999年,由IBM的Andy Stanford-Clark和 ...
- 阿里云宣布进入 Serverless 容器时代,推出弹性容器实例服务 ECI
摘要: 阿里云宣布弹性容器实例 ECI(Elastic Container Instance)正式商业化. 为了应对业务高峰,打算提前多久执行ECS扩展?买了ECS虚拟机,容器规格不能完美装箱怎么办? ...
- str和byte的区别
bytes 1.bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定 2.bytes是Python 3中特有的,Pyt ...
- Swig c++=>C#
1.下载swig https://sourceforge.net/projects/swig/files/ 2.配置环境变量 path 添加你的swig路径 3.创建项目解决方案和一个win32 dl ...
- 三模数NTT模板
求两个多项式的卷积对任意数p取模 两个好记的FNT模数: 5*2^25+1 7*2^26+1 原根都为3 //Achen #include<algorithm> #include<i ...