| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> AtCoder Beginner Contest 253 A~E 题解 -> 正文阅读 |
|
[C++知识库]AtCoder Beginner Contest 253 A~E 题解 |
ABC253 A~E
A - Median?题目大意给定正整数
a
,
b
,
c
a,b,c
a,b,c,判断
b
b
b是否为三个数中的中位数(即从小到大排序后是第二个,不是平均数)。 输入格式a ? b ? c a~b~c a?b?c 输出格式如果
b
b
b是三个数中的中位数,输出 样例
分析本来就是A题,其实没什么难的, 当然可以直接将三个数排序(简单粗暴),也可以判断 a ≤ b ≤ c a\le b\le c a≤b≤c和 c ≤ b ≤ a c\le b\le a c≤b≤a中是否有至少一个成立。 代码
B - Distance Between Tokens题目大意在
H
×
W
H\times W
H×W的网格上,有恰好两个位置上各有一颗棋子,别的都是空位。 输入格式先是一行
H
,
W
H,W
H,W,用空格隔开,然后有
H
H
H行,每行是一个长度为
W
W
W的字符串, 输出格式输出一行,即至少要移动的次数。 样例样例输入1
样例输出1
样例输入2
样例输出2
分析本题不需要 BFS \text{BFS} BFS,由于没有障碍物,直接找到两颗棋子,并输出 x diff + y diff x_\text{diff}+y_\text{diff} xdiff?+ydiff?(即 x , y x,y x,y的坐标差之和)即可。 代码
C - Max - Min Query题目大意我们有一个序列
S
S
S,初始为空。
1
≤
Q
≤
2
×
1
0
5
1\le Q\le 2\times 10^5
1≤Q≤2×105 输入格式
Q
Q
Q 输出格式对于每个操作 3 3 3,输出 S S S中最大值与最小值的差。 分析
本题可以用
这时,每个查询都可转换为上述操作,详见代码。 代码
D - FizzBuzz Sum Hard题目大意输出 1 1 1到 N N N之间不是 A A A或 B B B的倍数的数之和。 1 ≤ N , A , B ≤ 1 0 9 1\le N,A,B\le 10^9 1≤N,A,B≤109 输入格式N ? A ? B N~A~B N?A?B 输出格式输出答案。 分析根据容斥原理,
1
1
1到
N
N
N之间是
A
A
A或
B
B
B的倍数的数之和为: 再设
f
(
N
)
=
1
+
2
+
?
+
N
,
g
(
x
,
N
)
=
x
f
(
?
N
X
?
)
=
(
N
f(N)=1+2+\dots+N,g(x,N)=xf(\lfloor\frac N X\rfloor)=(N
f(N)=1+2+?+N,g(x,N)=xf(?XN??)=(N以内所有
x
x
x的倍数之和
)
)
), 代码这里使用了另一种 g ( x , N ) g(x,N) g(x,N)的求法,思路类似。
E - Distance Sequence题目大意求符合如下条件的 A = ( A 1 , … , A N ) A=(A_1,\dots,A_N) A=(A1?,…,AN?)的个数,对 998244353 998244353 998244353取模:
2
≤
N
≤
1000
2\le N\le 1000
2≤N≤1000 输入格式N ? M ? K N~M~K N?M?K 输出格式输出符合条件的序列的个数,对 998244353 998244353 998244353取模。 分析很明显是
DP
\text{DP}
DP(动态规划)的思路,仿照01背包的方式,我们设计如下状态: 但是注意到这里有个求和的操作,显然可以用前缀/后缀和优化,用 O ( 1 ) \mathcal O(1) O(1)的时间复杂度求出两个和,因此时间复杂度降到 O ( N M ) \mathcal O(NM) O(NM),可以通过。 最后一个坑,需要注意特判
K
=
0
K=0
K=0的情况,答案为
M
N
?
m
o
d
?
998244353
M^N\bmod 998244353
MNmod998244353。 代码特判使用快速幂, DP \text{DP} DP建议使用滚动表(又称数组重复利用)技巧,优化后实测:
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 6:27:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |