| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> Codeforces Global Round 20 A~F1题解 -> 正文阅读 |
|
[数据结构与算法]Codeforces Global Round 20 A~F1题解 |
太困,实在撑不住,F2早上起来再补罢,抱歉了。 A. Log Chopping题意:给了一堆长度不一的木头,问能够剁几刀。 思路:直接计算即可。 时间复杂度: O ( n ) O(n) O(n)
B. I love AAAB题意:用 A B 、 A A B 、 A A A B … … AB、AAB、AAAB…… AB、AAB、AAAB…… 按照任意顺序插入一个空字符串,能否得到所给字符串。 思路:如果所给字符串能够被构造的话,一定会符合两种条件:
时间复杂度: O ( n ) O(n) O(n)
C. Unequal Array题意:给定一个长度为 n n n 的数组 s s s,定义一种操作,将 s [ i ] , s [ i + 1 ] s[i],s[i+1] s[i],s[i+1] 的值改为任意一个值 x x x, 1 ≤ i < n 1\leq i<n 1≤i<n。 问最少进行多少次操作,使得 1 ≤ i < n 1\leq i<n 1≤i<n 中 s [ i ] = = s [ i + 1 ] s[i]==s[i+1] s[i]==s[i+1] 的 i i i 的个数 ≤ 1 \leq 1 ≤1 。 思路:这又是一道结论题。 时间复杂度: O ( n ) O(n) O(n)
D. Cyclic Rotation题意:给定一个长度为
n
n
n 的数组
s
s
s,可以对其进行任意次数的以下操作: 思路:这道题感觉是模拟加一点点贪心。 首先要确定一点,这两个数组的最后一个数必须相同,否则必然无法转化; 所以大致思路就是模拟这一过程,如果遍历到不相同的点时,它右边的点能够匹配、前面的相同值的下标足够进行匹配的话,那就直接进行一次操作;否则就判断它是否能够作为操作的左端点,能就重新判断下一个点,否则就直接 f a l s e false false。 Ps.代码中我用 j j j 来表示遍历到该点时正在多少次操作之中。 人菜码多别骂了,佬们应该有更简便的解法 时间复杂度: O ( n ? log ? n ) O(n*\log{n}) O(n?logn)
E. notepad.exe题意:有 n n n 个长度未知的字符串数组,你可以进行最多 n + 30 n+30 n+30 次询问。 对于每次询问,你可以定一个宽度 w w w,如果这个宽度比最长的字符串还要短,则会返回 0 0 0 ;否则,在两个相邻字符串之间至少间隔一个空格、每行的长度不超过所给的宽度的情况下,所能够得到的最小的长度 h h h。 求该字符串数组能够得到的 h ? w ≠ 0 h*w\neq 0 h?w?=0 的情况下的最小值。 思路:这道题是赛后补的,交互题实在是有些不擅长。 看到
n
+
30
n+30
n+30 次的询问次数,有经验的佬们能看出
30
30
30 代表需要二分,那么我们想下这种情况需要二分什么? 知道了整个“大”字符串的长度,那么接下就只需要遍历 h h h ,并求出对应的 h ? w h*w h?w,最后取一个最小值即可。 时间复杂度: O ( n ) O(n) O(n)
F1. Array Shuffling题意:给出一个长度为
n
n
n 的数组
a
a
a,并定义一种操作: 问怎样将其重新排列,使得得到的数组 b b b 需要最多次操作才能将其还原为 a a a 数组,这里还原的操作为最优解。 思路:就……很巧,这道题的逆题之前记得佬们聊起过,所以这道题算半个结论题吧,结论与证明 在此。 我们已经知道,想要让还原数组的最少操作次数最多,就要使操作中的环的个数最少;又因为,一个交换操作对应的环中不能有相同的值。 时间复杂度: O ( n ) O(n) O(n)
F2. Checker for Array Shuffling题意:思路:时间复杂度: O ( ) O() O()
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 8:22:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |