| |
|
开发:
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 252 A~G 题解 -> 正文阅读 |
|
[C++知识库]AtCoder Beginner Contest 252 A~G 题解 |
ABC252 A~G
A - ASCII code题目大意给定正整数
N
N
N,输出ASCII码是
N
N
N的字母。 输入格式N N N 输出格式输出ASCII码是 N N N的字母。 分析注意
再不懂你试试…… 代码太水,直接走一发py(现场25秒AC)
B - Takahashi’s Failure题目大意Takahashi的房子里有
N
N
N个食物。第
i
i
i个食物的美味度是
A
i
A_i
Ai?。
1
≤
K
≤
N
≤
100
1\le K\le N\le 100
1≤K≤N≤100 输入格式
N
?
K
N~K
N?K 输出格式如果有可能,输出 分析只要有不喜欢的食物美味度最高就有可能,否则不可能。详见代码。 代码还是水,注意如果是 0-indexed \text{0-indexed} 0-indexed的话 B i B_i Bi?要减 1 1 1
C - Slot Strategy题目大意略,请自行前往AtCoder查看。 2 ≤ N ≤ 100 2\le N\le 100 2≤N≤100 输入格式
N
N
N 输出格式输出答案。 分析令 cnt [ i ] [ j ] = ( S k [ j ] = i \text{cnt}[i][j]=(S_k[j]=i cnt[i][j]=(Sk?[j]=i的个数 ) ) ),对最终变成 0 0 0- 9 9 9分别计算代价即可。详见代码。 代码
D - Distinct Trio题目大意给定长为
N
N
N的整数序列
A
=
(
A
1
,
…
,
A
N
)
A=(A_1,\dots,A_N)
A=(A1?,…,AN?)。
3
≤
N
≤
2
×
1
0
5
3\le N\le 2\times 10^5
3≤N≤2×105 输入格式
N
N
N 输出格式输出一行,即符合条件的整数对 ( i , j , k ) (i,j,k) (i,j,k)的个数。 分析本题主要有两种思路:
这里介绍第一种方法(第二种方法较为简单,不详细说明)。 首先易得,总共的
1
≤
i
<
j
<
k
≤
N
1\le i<j<k\le N
1≤i<j<k≤N有
C
n
3
C_n^3
Cn3?种取法。
总时间复杂度为 O ( N + max ? A ? min ? A ) \mathcal O(N+\max_A-\min_A) O(N+maxA??minA?),空间复杂度为 O ( max ? A ? min ? A ) \mathcal O(\max_A-\min_A) O(maxA??minA?)。 代码
E - Road Reduction题目大意给定一张由
N
N
N个点和
M
M
M条边组成的简单无向图。
2
≤
N
≤
2
×
1
0
5
2\le N\le 2\times 10^5
2≤N≤2×105 输入格式
N
?
M
N~M
N?M 输出格式按任意顺序输出留下来的 N ? 1 N-1 N?1条边的下标,用空格隔开。 分析显然,在生成树中,点
1
1
1到任意点的距离肯定不少于在原图中到这个点的距离。 代码Dijkstra的两种经典实现方式, O ( N log ? N + M log ? N ) \mathcal O(N\log N+M\log N) O(NlogN+MlogN)
注意使用 F - Bread题目大意
有一个的整数序列 S S S,初始只有一个元素 L L L,我们可以执行如下操作无限次:
求最小的代价,使得 A A A在 S S S中,即 A A A中每个元素的出现次数 ? ≤ S ~\le S ?≤S中对应元素的出现次数。
2
≤
N
≤
2
×
1
0
5
2\le N\le 2\times 10^5
2≤N≤2×105 输入格式
N
?
L
N~L
N?L 输出格式输出最小的代价。 分析本题考虑逆向思维,仔细思考后发现题目可以如下转化:
此时,显然每次合并最小的两个数即为最优方案,因此可以使用优先队列实现,总时间复杂度为 O ( N log ? N ) \mathcal O(N\log N) O(NlogN)。 代码注意使用
G - Pre-Order题目大意有一颗由
N
N
N个节点
1
,
2
,
…
,
N
1,2,\dots,N
1,2,…,N组成的树,它的根节点为
1
1
1。
2
≤
N
≤
500
2\le N\le 500
2≤N≤500 输入格式
N
N
N 输出格式输出答案,对 998244353 998244353 998244353取模。 分析我们先将
P
P
P变为
0-indexed
\text{0-indexed}
0-indexed,即原来的
(
P
1
,
P
2
,
…
,
P
N
)
(P_1,P_2,\dots,P_N)
(P1?,P2?,…,PN?)分别对应
(
A
0
,
A
1
,
…
,
A
N
?
1
)
(A_0,A_1,\dots,A_{N-1})
(A0?,A1?,…,AN?1?)。 下面考虑 d p ( l , r ) \mathrm{dp}(l,r) dp(l,r)的动态转移方程。
至此,本题已结束,时间复杂度为 O ( N 3 ) \mathcal O(N^3) O(N3)。 代码注意事项:
|
|
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:21:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |