| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> [AGC006B] Median Pyramid Easy(题解) -> 正文阅读 |
|
[数据结构与算法][AGC006B] Median Pyramid Easy(题解) |
一道挺有意思的构造题 其实有很多种构造方法,这里介绍一种比较好想的方法。 我们想让
x
x
x 作为最顶层的元素,最好的方法就是让
x
x
x 一直处于中间。于是我们就可以使得
x
x
x 左右两边的数都比
x
x
x 小,分别为
x
?
1
x - 1
x?1 和
x
+
1
x + 1
x+1,如图 这里我们可以证明一下 x x x 一直处在中间 若 y 1 > = x y1 >= x y1>=x 则 y 2 = x y2 = x y2=x 若 y 1 < x y1 < x y1<x 则 y 2 = x ? 1 y2 = x-1 y2=x?1 所以 y 2 = y2 = y2= x x x 或 x ? 1 x-1 x?1 同理 若 z 1 < = x z1 <= x z1<=x 则 z 2 = x z2 = x z2=x 若 y 1 > x y1 > x y1>x 则 y 2 = x + 1 y2 = x+1 y2=x+1 所以 z 2 = z2 = z2= x x x 或 x + 1 x+1 x+1 综上,无论 y 2 y2 y2 和 z 2 z2 z2 怎么搭配,中间的数一定是 x x x 所以我们写程序的时候只用将 x ? 1 , x , x + 1 x-1,x,x+1 x?1,x,x+1 放在中间即可,其他的数可以随便放置 对于无法构造的情况我们只需判断 x x x 是否等于 1 1 1 或 2 × n + 1 2×n+1 2×n+1 完整代码
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:51:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |