| |
|
开发:
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 #730 div.2 A-E题解 -> 正文阅读 |
|
[数据结构与算法]Codeforces Round #730 div.2 A-E题解 |
视频讲解:TBD A. Exciting Bets题目大意给定整数
a
,
b
(
0
≤
a
,
b
≤
1
0
18
)
a,b(0 \leq a,b \leq 10^{18})
a,b(0≤a,b≤1018) ,可以对其修改任意次数,使得
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b) 最大。求修改后的
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b) 与最小修改次数。 题解若
a
=
b
a=b
a=b ,则
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b) 可以无穷大。反之,最大的
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b) 为
∣
a
?
b
∣
|a-b|
∣a?b∣ 。 b + x = k 2 ? g b+x=k_2*g b+x=k2??g a ? b = ( k 1 ? k 2 ) g a-b=(k_1-k_2)g a?b=(k1??k2?)g 可得 g g g 是 a ? b a-b a?b 的因子,最大就是 ∣ a ? b ∣ |a-b| ∣a?b∣ ,证毕。 若
x
≥
0
x \geq 0
x≥0 ,则
x
=
?
a
+
g
?
1
g
?
?
g
?
a
x=\lfloor \frac{a+g-1}{g}\rfloor \cdot g -a
x=?ga+g?1???g?a ; 参考代码
B. Customising the Track题目大意有
n
(
1
≤
n
≤
2
?
1
0
5
)
n(1 \leq n \leq 2 \cdot 10^5)
n(1≤n≤2?105) 个轨道,编号从
1
1
1 到
n
n
n 。第
i
i
i 个轨道上有
a
i
a_i
ai? 辆车。 题解观察表达式,易得
a
i
a_i
ai? 尽可能平均分布时最优。 参考代码
C. Need for Pink Slips题目大意有三种奖品,分别简称为C奖品,M奖品,P奖品。每次获取奖品时,会随机从中获得一项,概率分别为
c
,
m
,
p
(
0
<
c
,
m
,
p
<
1
,
c
+
m
+
p
=
1
)
c,m,p(0< c,m,p < 1,c+m+p=1)
c,m,p(0<c,m,p<1,c+m+p=1) 。
求抽中P奖品的抽奖次数期望。 题解设
f
(
c
,
m
,
p
)
f(c,m,p)
f(c,m,p) 表示当前获奖概率分别为
c
,
m
,
p
c,m,p
c,m,p 时的抽奖次数期望,那么根据题意,可以写出其递归方程式(详见参考代码)。 参考代码
D1+D2. RPD and Rap Sheet题目大意定义
a
⊕
k
b
a \oplus_k b
a⊕k?b 表示整数
a
a
a 与
b
b
b 的在
k
k
k 进制下的不进位加法。特别的,当
k
=
2
k=2
k=2 时,这一操作可以称为位运算的异或。
对于 Easy Version,
k
=
2
k=2
k=2 ; 题解设
a
?
k
b
a \ominus _k b
a?k?b 表示
k
k
k 进制下不退位的
a
?
b
a-b
a?b ,其与
⊕
k
\oplus _k
⊕k? 都可以通过手写加减法的形式实现。 初始
a
n
s
0
=
x
ans_0=x
ans0?=x ,可以得到通项式: a n s i = { y i ? k y i ? 1 ⊕ k y i ? 2 ? . . . ? k x x % 2 = 1 y i ? k y i ? 1 ⊕ k y i ? 2 ? . . . ⊕ k x x % 2 = 0 ans_i = \begin{cases} y_i \ominus_k y_{i-1} \oplus_k y_{i-2} \ominus ... \ominus_k x &x\%2=1 \\ y_i \ominus_k y_{i-1} \oplus_k y_{i-2} \ominus ... \oplus_k x &x\%2=0 \end{cases} ansi?={yi??k?yi?1?⊕k?yi?2??...?k?xyi??k?yi?1?⊕k?yi?2??...⊕k?x?x%2=1x%2=0? 因此可以在 [ 0 , n ? 1 ] [0,n-1] [0,n?1] 范围内枚举 x x x ,根据历史 y i y_i yi? ,求得当前应该询问的数 y i = a n s i ? 1 y_i=ans_{i-1} yi?=ansi?1? 。 当
x
x
x 逐个从
0
0
0 枚举到
n
?
1
n-1
n?1 进行询问时,即
y
i
+
1
y_{i+1}
yi+1? 为
x
=
i
x=i
x=i 时的
a
n
s
i
ans_i
ansi? ,上式也可以化简为: 就代码实现难度而言。是否进行化简区别不是特别大。 对于 Easy Version ,
⊕
2
\oplus_2
⊕2? 与
?
2
\ominus_2
?2? 都可以用异或进行计算。 参考代码
E. The Final Pursuit题目大意定义简单 n n n 维超立方体可以表示为一个无向无权图,其采用以下递归方式构建:
定义置换
n
n
n 维超立方体由对简单
n
n
n 维超立方体的节点按任意方式重新排列得到。
置换
n
n
n 维超立方体可以用排列
P
P
P 对简单
n
n
n 维超立方体的节点编号置换后得到。
题解这个问题包含两个子问题,一个是求置换 P P P ,另一个是顶点染色。 求置换 P根据简单 n n n 维超立方体的定义,我们可以得到推论:
不妨初始设 p 0 = 0 p_0=0 p0?=0 ,对于 0 0 0 号节点的每个相邻节点,均可视为新维度的拓展,标记其简单编号为 1 , 2 , 4 , . . . , 2 n ? 1 1,2,4,...,2^{n-1} 1,2,4,...,2n?1 。具体哪个节点对应哪个编号均可。 接下来 i i i 从小到大贪心求解 p i p_i pi? 。
寻找与 p b 1 p_{b_1} pb1?? 和 p b 2 p_{b_2} pb2?? 都相邻且距离为 1 1 1 的点时,可以枚举 p b 1 p_{b_1} pb1?? 的相邻点集,用二分或 set 在 p b 2 p_{b_2} pb2?? 的相邻点集中快速检查是否存在。 顶点染色关于顶点染色部分,推荐参考 3Blue1Brown 的 不可能的棋盘谜题 问题介绍与 Stand-up Maths 的解法 。
根据以上结论,我们可以尝试如下构造节点颜色:
合理性证明:
参考代码
|
|
|
上一篇文章 查看所有文章 |
|
开发:
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:37:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |