Codeforces Round 928 (Div. 4)
Codeforces Round 928 (Div. 4) (A~E)-CSDN博客
Codeforces Round 928 (Div. 4) (A~E)
A题:Vlad and the Best of Five
标签: 实现问题,编程技巧,模拟(implementation)
题目大意
- 有一个长度为 5的字符串,每个字符都是 A或 B 。
- 问:哪个字母出现的频率最高? A 还是 B ?
思路
- 暴力即可
AC代码
1 |
|
B题:Vlad and Shapes
标签: 实现问题,编程技巧,模拟(implementation)
题目大意
- 有一个由 n×n正方形网格。网格上画有三角形或正方形,符号为 1 。
- 问:网格上画的是哪个形状。
思路
- 判断是否有连续两行有不同数量的1,有就是三角形
AC代码
1 |
|
C题:Vlad and a Sum of Sum of Digits
标签: 前缀和,动态规划(dp)实现问题,编程技巧,模拟(implementation)
题目大意
- 将1~n每个整数替换为其数位之和。(1≤n≤2⋅10^5^)
- 多次求前n项和
思路
- 暴力将前2⋅10^5^内的数替换为其数位之和
- 求前缀和保存在 ans数组中,每次求前n项和直接输出 ans[n] 即可
AC代码
1 |
|
D题:Vlad and Division
标签: 位掩码(bitmasks)贪心(greedy)
题目大意
- 有n个非负整数,对这n个数分组,分组规则如下:
- 对于同一组中的任意两个数 x 和 y ,条件 x
2(i) ≠ y2(i) 必须对所有的 1≤i<32成立,其中x2(i) 表示x转化为二进制数的第 i 位
思路
- 转化为二进制每位是1或0,两种情况,两个数二进制每位(31位)都不同,那么这两个数之和一定为
- 1111111111111111111111111111111(二进制) = 2147483647
- 即:对于同一组中的任意两个数 x 和 y,满足x + y == 2147483647
- 由于2147483647是奇数所以同一组中也不可能出现两个相同数字
AC代码
1 |
|
E题:Vlad and an Odd Ordering
标签: 二分搜索(binary search)位掩码(bitmasks)数据结构(data structures)动态规划(dp)实现问题,编程技巧,模拟(implementation)数学(math)
题目大意
- 有编号为 1,2,…,n的n 张牌,把这些牌按如下方式排成一排
- 首先,他把所有奇数牌从小到大依次铺开。
- 接着,放下所有从小到大是奇数i倍的牌(即 2 乘以一个奇数)。
- 接着,放下所有从小到大是奇数的 3 倍(即 3 乘以奇数)的牌。
- 接着,放下所有从小到大 4 乘以一个奇数(即 4 乘以一个奇数)的牌。
- 依此类推,直到所有的牌都放下为止。
- 问:放下的第 k张牌是什么?
思路
手动模拟一下
可以看出只有第1 2 4 16 32…轮才可能放下牌,并且放下的牌构成等差数列公差为2 * cnt
AC代码
1 |
|
logo
1 |
|
1 |
|
Codeforces Round 928 (Div. 4)
https://leaf-domain.gitee.io/2024/02/20/algorithm/codeforces/cf-div4-928/