2020寒假训练营4
2021/5/14 18:25:21
本文主要是介绍2020寒假训练营4,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2020寒假训练营4
A.欧几里得 如果已知 gcd(a,b) 共递归了 n次,求所有可能的a,b中满足a>b>=0且a+b最小的一组的a与b之和
打表发现是个斐波那契数列,直接输出即可
B.括号序列 给出一个仅包含’[’,’]’,’(’,’)’,’{’,’}'六种字符的括号序列,判断其是否合法
三个括号可以用栈来做,遇到左括号入栈,遇到对应的有括号则出栈,最后栈若为空则合法,其他情况不合法。
C.子段乘积 给出一个长度为 n 的数列,求其长度为 k 的连续子段的乘积对 998244353 取模余数的最大值
可以直接用线段树来做,将对区间的查询改为乘,此种方法较为便捷。
也可以用尺取加逆元来做,具体来说,若当前a[r]的值不为0,则连续乘k段,与存储的最大值作比较取最大,在指针移动时要注意,原本要求sum/a[r]的,但要用逆元求,即sum=sum*qpow(sum,mod-2)%mod;之后再进行指针的移动。若a[r] = 0,则跳过当前区间,并将sum置为1。
D.子段异或 输入一个数列a,你需要输出其中异或值为0的不同子段的数量
由异或的性质,abb=a,异或两次值不变。所以[l,r]区间的异或值为前r段的异或和异或前l-1段的异或和,所以可以把异或前缀和统计出来,再排序,对每个数计算左右都相同的数量。
这篇关于2020寒假训练营4的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南