牛客小白月赛85
A. ACCEPT
思路:
ACCEPT
中每个字符的个数取最小值(C
的个数要除以2
)
时间复杂度:\(O(n)\)
1 | void solve() { |
B. 咕呱蛙
思路:
- 打表找规律即可,代码的下面有注释打表的过程,\(\Sigma_{i=1}^{n}\Sigma_{j=1}^{i}\) 的每一项和是两个奇数两个偶数互相交替出现的,然后可以直接得出规律
- \(n\) 为奇数,\(ans=n \times 2\)
- \(n\) 为偶数,\(ans=n \times 2 + 1\)
时间复杂度:\(O(1)\)
1 | signed main() { |
C. 得分显示
思路:
- 答案为 \(\Sigma_{i=1}^{n}min((a_i+1) \div i)\)
附:\(a_i + 1\) 即为当前这个数的右极限
时间复杂度:\(O(n)\)
1 | signed main() { |
D. 阿里马马与四十大盗
思路:
- 会发现只需要维护当前位置的后缀和即可
- 如果当前位置的后缀和大于当前的血量,并且当前的血量不是满的,那么一定是越早回复花费的时间越少
- 注意要判断当前位置是否等于
0
时间复杂度:\(O(n)\)
1 | signed main() { |
E. 烙饼
思路:
- 可以发现,我们需要维护一个可以在最短时间内完成尽可能多的饼
- 那么一定要确定一个时间的最大值 \(max(\lceil \frac{\Sigma_{i=1}^{n}a_i}{m} \rceil, max(a_i))\)
- 然后维护这最大值即可
时间复杂度:\(O(n)\)
1 | signed main() { |