Educational Codeforces Round 116 (Rated for Div. 2)
2021/10/30 6:10:08
本文主要是介绍Educational Codeforces Round 116 (Rated for Div. 2),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Educational Codeforces Round 116 (Rated for Div. 2)
A. AB Balance
易得至多改一个位置。
然后枚举改哪个位置,特判不改。
对于一个字符串,每次扫一遍就可以算出ab和ba的个数。
B. Update Files
每一轮最大的增量会是这样变化的:1 2 4 8 ... k k k ...
前面倍增的轮数不会太多,直接模拟。
到达k后就可以直接算剩余轮数。
C. Banknotes
肯定是尽量用面额较小的,这样组出来的才会小。
假设\(c * a_i = a_{i+1}\),则\(a_i\)至多用\(c - 1\)次。因为\(a_i\)用了\(c\)次得到的答案,肯定可以用1个\(a_j\)替换\(c\)个\(a_i\),然后再凑到。
当剩余次数\(k >= c\)时,就使用\(c - 1\)张\(a_i\)。
否则,再使用\(k + 1\)张\(a_i\)就是凑不到的数。
D. Red-Blue Matrix
假设将行重新排列,红色的更靠上方。结合题目,就是将原矩阵划分成4个部分,且左上大于左下,右下大于右上。
这里,\(A\)大于\(B\)相当于\(\min(A) > \max(B)\)。根据这一点,我们可以只关注最大最小值,所以可以将每行的前缀最大最小值和后缀最大最小值求出来。分别记为\(prefixMin,prefixMax\)和\(suffixMin,suffixMax\)。
不妨先将矩阵划分为左和右两部分。枚举划分的列数,即枚举前\(i\)行为左侧。由于只关注最大最小值,左侧的行可以用行的前缀最大和最小值代替,右侧类似。之后只需要关心行的划分。
对于左侧的红色行而言,其中的最小值越大越好。不妨对于左侧,将行按最小值降序排序。
现在再去枚举划分的行数,即枚举前\(i\)行为红色。
由于只关注最大最小值,对于左侧,红色的行可以用前缀最小值代替,蓝色可以用后缀最大值代替。右侧类似。分别记为\(LeftUpMin, LeftDownMax, RightUpMax, RightDownMin\)。
如果满足\(leftUpMin > leftDownMax \and rightUpMax < rightDOwnMin\),就是可行的方案。
E. Arena
TBA。
吐槽
疏于训练,代码能力直线下滑。
C想了半天,D一下就想到正解但是代码绕半天写不出来。
E题不会,大概是个组合数学。
这篇关于Educational Codeforces Round 116 (Rated for Div. 2)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享