Codeforces Round 918 (Div. 4)
A. Odd One Out
思路:
- 找出出现次数为
1
的那个数即可
时间复杂度:\(O(1)\)
1 | void solve() { |
B. Not Quite Latin Square
思路:
- 找出有
?
的行和列,出现次数为0
的字母即可
时间复杂度:\(O(1)\)
1 | void solve() { |
C. Can I Square?
思路:
- 判断这个序列的总和是否是一个完全平方数,注意爆
int
时间复杂度:\(O(n)\)
1 | void solve() { |
D. Unnatural Language Processing
思路:
- 模拟
- 首先预处理所有的合法音节,然后枚举
s
- 首先查找长度为
3
的音节(注意:这个找到的音节后面一位不能是元音字母,不然不合法),然后再找长度为2
的 - 尾部有
.
的,将尾部多余的.
删除
时间复杂度:\(O(nlogn)\)
1 | void solve() { |
E. Romantic Glasses
思路:
- 枚举奇数和偶数和,在这个过程中,用
set
哈希一下,注意(不要用unordered_set
,会被卡) - 如果出现当前奇数和等于偶数和的情况,就输出
YES
- 每次枚举时,将奇数和偶数的差插入哈希表中,如果这个差值出现过,也就是这个相等的区间找到了,就输出
YES
- 否则,输出
NO
时间复杂度:\(O(n)\)
1 | void solve() { |
F. Greetings
思路:
- 首先将起始点和终点进行映射,它们的相对位置不会发生变化
- 倒着枚举所有可能的终点,如果存在,就先获取一下当前点会经过多少个点,然后统计个数,在继续插入树状数组中,最后 \(ans=\Sigma_{i=1}^{n}num_i\)
时间复杂度:\(O(nlogn)\)
1 | template <typename T> |