| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Codeforces Round #745 (Div. 2)部分题解(A ~ C,E的题意与想法) -> 正文阅读 |
|
[数据结构与算法]Codeforces Round #745 (Div. 2)部分题解(A ~ C,E的题意与想法) |
目录前言这场div2的时间就很离谱,也是怪博主自己没好好看,最后也是错过了。 闲话不多说了,上主菜。 A - CQXYM Count Permutations(数学+思维)比赛链接:https://codeforces.com/contest/1581/problem/A 题目大意1~2n的数字序列的排列组合一共会有 ( 2 n ) ! (2n)! (2n)! 种不同的结果。 请问,在这些结果中,正序下标的数量不少于n的有多少个? 正序下标:如果有下标 i 使得a[i]<a[i+1],则称 i 为正序下标。 思路这其实是一个结论题:会有一半的结果满足条件。也就是
1
2
{1\over 2}
21?
(
2
n
)
!
(2n)!
(2n)! 。 剩下的只需要注意一个点: AC代码
B - Diameter of Graph (数据结构+思维)比赛链接:https://codeforces.com/contest/1581/problem/B 题目大意CQXYM想要用
n
n
n个结点与
m
m
m条边来构造一张无向连通图。 请问CQXYM是在痴人说梦吗? 思路这明显是抽查各位基础知识学得踏不踏实,博主我看到的时候当时就不乐意了。 这不是在蔑视我[○・`Д′・ ○]? 在我把我手上所有的数据结构书都翻了一遍之后也是胸有成竹的把它给AC了。
接下来,我们考虑 k k k的取值。 如果 k < 2 k<2 k<2,此时条件会变得不合法,所以特判掉。
如果 k = = 2 k==2 k==2,也就是说点与点之间的最大距离为 0 0 0,那也就是说这张图上只能有 1 1 1个点, 0 0 0条边才满足条件。
如果
k
=
=
3
k==3
k==3,也就是说点与点之间的最大距离为
1
1
1,此时我们可以采用完全图的方式构图。
如果 k > 3 k>3 k>3,此时我们就可以构建一张星型图,把剩下的边找地方画,这样就可以保证所有点之间的最小距离的最大值为 2 2 2,这种情况一定可以成立。(下图为由6个结点形成的星型图)
AC代码
C - Portal(暴力+思维)比赛链接:https://codeforces.com/contest/1581/problem/C 题目大意在游戏Minecraft之中存在着下界这一维度。 玩家想要进入下界,就必须使用黑曜石搭建出有效的下界传送门框架,然后点火激活。
现在给出一个
n
×
m
n×m
n×m的矩阵,矩阵中
0
0
0代表空气方块,
1
1
1代表黑曜石。 请问最少需要替换多少个方块才能造出一个有效的下界传送门框架? 思路博主作为
M
C
MC
MC十年老玩家,不说别的,光下界传送门博主也是至少搭过上千个了,去下界就跟回家一样。 不瞎扯了,我们来看一下这个题。 首先我们要知道 4 ? 5 4*5 4?5是传送门的最小限制而已,也就是说最小的传送门形式应该是下面的这个:
注意,四个角可以是 1 1 1也可以不是 1 1 1,即使是下面的形式也是有效的框架形式:
了解到这一点之后我们就需要想一想,如果我们指定了一片区域,想知道它需要替换多少个方块才可以变得有效,我们该怎么办。 我们用二维前缀和数组存储整个矩阵,可以利用这个矩阵与前缀和的特点,快速地获取到指定区域的具体情况。 接下来我们就暴力枚举出每次的起始行、起始列、终止行与终止列,由于数据比较水,使得O(n3)就能过。
你以为到这就结束了? 虽然是O(n3)就能水过,但目前还是一个O(n4)的代码,会在第三个样例
T
T
T 掉的。 我们想一想,在我们不断去枚举传送门的右下角的位置的时候,横着的两排黑曜石所需要的消费与中间空白区域所需要的消费是不递减的,竖着的左面一列的黑曜石所需要的消费是不会改变的,而竖着的右面一列的黑曜石所需要的消费的改变是无法确定的。 此时我们可以利用 左+中+上+下 一定不递减的性质进行一次剪枝,这样就可以水过去了。 AC代码
D - Mathematics Curriculum比赛链接:https://codeforces.com/contest/1581/problem/D 少有的看了一下午题意没看懂,看大佬们AC的代码也看不明白的题。 奇奇怪怪的D,我甚至觉得E题都比这题简单。 只能先放在这,看看有没有大佬可以出篇题解我去悟一悟。 E - Train Maintenance(差分数组+线段树+数学)比赛链接:https://codeforces.com/contest/1581/problem/E 题目大意在一个火车站有
n
n
n列火车,每一列火车都有两个属性:工作天数
x
i
x_i
xi?和维修天数
y
i
y_i
yi?。 一开始,所有的火车都是停用状态。 现在需要你求出每天有多少列火车正在维修。 想法自己看完,没啥思路说实话。 怎么说呢,有的地方还能看懂,有的地方比较迷惑。 首先为什么是
s
q
r
t
(
m
)
sqrt(m)
sqrt(m)?解释看懂了一些,但又没完全懂。 其他的我基本上都悟了,应该就差这两个点了。 总的来说这次的div2对于博主这样的菜狗来说是略微有点难度的(doge)。 后续再把DE题看一看补一补,E题必须得出,真的就差一点了我感觉。 这次就到这里,感谢阅读。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 4:34:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |