首页 > 其他分享 >CodeForces 合集第三弹

CodeForces 合集第三弹

时间:2023-11-20 22:01:09浏览次数:41  
标签:匹配 symbfit 代码 CodeForces 第三 leq 合集 复杂度 贪心

这个合集主要是近期的 CodeForces 比赛题。

1898. Codeforces Round 910 (Div. 2)

https://codeforces.com/contest/1898

A. Milica and String

很容易发现答案不超过 \(1\),然后分类讨论当前 B 的个数然后选取一个前缀赋值即可。如果已经满足条件答案就是 \(0\)。反正随便做做,时间复杂度 \(O(n)\),代码

B. Milena and Admirer

考虑 倒着 贪心,我们肯定是要让当前在填的这个数尽可能大,给前面的数留出空间。二分这个数需要分几次才能 \(\leq x\),具体一点,如果 \(v\) 要分 \(k\) 次,那么最优方案下这 \(k + 1\) 个数的最小值为 \(\left\lfloor\dfrac{v}{k + 1}\right\rfloor\),最大值为 \(\left\lceil\dfrac{v}{k + 1}\right\rceil\)。贪心即可,时间复杂度 \(O(n \log a_n)\),代码

C. Colorful Grid

容易发现,我们可以先从 \((1, 1)\) 走到 \((n, m)\) 然后兜圈子。发现 \(k\) 的奇偶性与 \((n + m - 2)\) 相同,如果不同直接无解。如果 \(k < n + m - 2\) 那么根本无法走到,也无解。然后我们就考虑兜圈子,设要兜 \(k' = k - (n + m - 2)\) 步。如果 \(k' \bmod 4 = 0\),那么直接按 \((n, m) \to (n, m - 1) \to (n - 1, m - 1) \to (n - 1, m) \to (n, m)\) 这样循环即可,按照路径染色即可。否则 \(k' \bmod 4 = 2\),可以在一开始多向右走 \(1\) 步,在多向左走 \(1\) 步,如图:

image

容易发现在 \(n = m = 3\) 的情况下,该构造方案也是合法的,所以可以 AC,写完代码一定要查 corner case!时间复杂度 \(O(nm)\),瓶颈在输入输出 & 初始化乐代码

D. Absolute Beauty

典。

感觉和 CF1093G 的套路类似。

设 \(C = \displaystyle \sum_{i = 1}^{n}|a_i - b_i|\)。

设交换了 \(b_i, b_j(1 \leq i < j \leq n)\),那么贡献为 \(C - |a_i - b_i| - |a_j - b_j| + |a_i - b_j| + |a_j - b_i|\),我们考虑枚举 \(i\),然后把后两个绝对值拆开,发现 \(a_i\) 与 \(b_j\) 异号,\(a_j\) 与 \(b_i\) 也异号。然后就可以把 \(a_i, b_i\) 和 \(a_j, b_j\) 拆开算了。直接暴力枚举正负号即可,具体见代码,时间复杂度 \(O(n)\),代码

E. Sofia and Strings

Conclusion. 可以把操作 \(\symbfit{2}\) 看成交换 \(\symbfit{s_i, s_{i + 1}}\) 并且满足 \(\symbfit{1 \leq i < n}\) 且 \(\symbfit{s_i \geq s_{i + 1}}\)。

考虑贪心匹配 \(t\) 在 \(s\) 中的位置。

容易发现 \(t_i\) 在匹配的时候右边不能有字典序比 \(t_i\) 大的并且已经匹配完的(指 \(t_1, t_2, \dots, t_{i - 1}\)),如果这个条件满足了,那么可以 \(t_n, t_{n - 1}, \dots, t_1\) 倒着向右边移动,可以发现一定是可以移动的。

然后贪心匹配,维护 \(52\) 个 std :: set,前 \(26\) 个表示每一个字母 未匹配 的下标。后 \(26\) 个表示每一个字母 已匹配 的下标。贪心选取一个尽可能靠前的并且右边没有比 \(t_i\) 大的已匹配的字符即可。如果在匹配某个字母的时候没有满足条件的就是无解。

时间复杂度 \(O(n \log n)\),代码

F. Vova Escapes the Matrix

有点难写,但是没有那么难调。

首先如果没有出口我们就可以把所有 . 都填上。

如果只有 \(1\) 个出口,那么保留最短的从起点到某一个点的最短路,剩下的可以都填上。

关键就是处理 \(\geq 2\) 个出口。我们可以选两条最短的最短路,但是会有重复的。怎么办?首先我们发现两条路径相交的部分是一个前缀,那么就存在一个分叉。枚举这个分叉,然后求这个分叉到出口的最短路的最短的两条,这个可以使用多源 bfs 求解,在加上到起点的距离用 . 的数量减去就是对答案的贡献了。主要难在这一部分以及代码实现,注意细节,时间复杂度 \(O(nm)\),代码

标签:匹配,symbfit,代码,CodeForces,第三,leq,合集,复杂度,贪心
From: https://www.cnblogs.com/RB16B/p/17844999.html

相关文章

  • Python——第三章:函数的定义
    函数:对某一个特定的功能或者代码块进行封装.在需要使用该功能的时候直接调用即可定义:def函数的名字():被封装的功能或者代码块->函数体调用:函数的名字()好处:让程序更加简洁.代码更加合理defbuy_cai():#定义函数print("1.打车")print("2.去菜......
  • Codeforces Round 785 (Div. 2)
    A-SubtleSubstringSubtraction/**__----~~~~~~~~~~~------___*..~~//====......__--~~~*-.\_|//|||\\~~......
  • golang环境和第三方爬虫包下载安装一把成
    复制代码在CentOS7.6中命令行中全部粘贴执行,golang环境和第三方爬虫包全部安装一把成。wgethttps://golang.google.cn/dl/go1.21.4.linux-amd64.tar.gztar-zxvfgo1.21.4.linux-amd64.tar.gz-C/usr/local/cat>>.bash_profile<<"EOF"exportGOROOT=/usr/local/goexpo......
  • Codeforces Round 908 (Div. 2)
    Preface补一下之前期中考落下的CFyysy因为这学期又开始断电了,所以除了周五周六晚上的CF可能都不一定会去打,都会以后面补题为主A.SecretSport由于题目保证给出的状态合法,因此直接输出最后一个字符即可#include<cstdio>#include<iostream>#include<utility>#include<vect......
  • C++第三方库汇总
    图像处理:OpenCV矩阵运算:Eigen图像读写:stb_image,广泛应用于Graphics领域文件解析json文件解析:RapidJson,参考:https://www.geeksforgeeks.org/rapidjson-file-read-write-in-cpp/glTF文件解析:cgltf......
  • Centos7 使用yum从第三方仓库安装Python3.8
    环境:CentOSLinuxrelease7.9.2009起因:Centos7自带Python2.7.5版本。而默认的YUM安装的python3是3.6版本,遂升级到3.8版本。installPython3.8yuminstall-ycentos-release-scl#仓库注册yuminstall-yrh-python38which#安装python3.8#创建软连接ln-s/opt......
  • oracle 轻量化包安装,使用第三方客户端
    轻量版客户端工具包:此方式适用于NavicatPremium、PLSQL、DBeaver等客户端工具的,如果其他程序(自己开发的程序,中间件等)要使用的话,还是要安装完整版得客户端。下载地址;64位客户端工具:https://download.oracle.com/otn_software/nt/instantclient/1912000/instantclient-basic-wind......
  • Codeforces Round 910 (Div. 2)
    CodeforcesRound910(Div.2)基本情况做A题的速度比之前快多了,大概20分钟搞定。B题想了一个贪心错解,想用链表实现,但是不熟练,实现太慢,而且还被hack了。但是自己hack掉了,造数据上进步。B.MilenaandAdmirer贪心思路发现一个大于下一个的数,直接对半分,如果不能对半就小的在......
  • 2023年11月第三周总结
    KMP算法字符串查找算法中的最优解。时间复杂度O(N+M)下面是自己写的#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<time.h>#include<stdbool.h>#definelllonglong#define......
  • Codeforces Round 909 (Div. 3)
    CodeforcesRound909(Div.3)基本情况第一次在CF上AC了超过一道题。(毕竟是Div3)B题卡住了很久。D没有深入思考。[B.250ThousandTonsofTNT](Problem-B-Codeforces)一开始死活过不了的代码:#include<iostream>#include<cstdio>#include<cstring>#inc......