做了几道 *1200 的题,感觉水题有点多,暂定每天 *1300 ~ *1700 各一道。
B. Same Parity Summands
题意:把 n n n 拆为 k k k 个正数,使得这些数奇偶性相同。
思路:先均摊为 k k k 个数,剩下的放到第一个数。我们转移 1 1 1 来构造奇偶性。当 a 1 a_1 a1 和后面的数奇偶性相同,输出答案。否则,我们发现 a 1 a_1 a1 和后面的数转移 1 1 1 ,全局奇偶性是不变的,只有后面的数互相转移时会从 2奇 ← → \leftarrow \rightarrow ←→ 2偶。此时尝试转移即可。
AC代码:https://codeforces.com/contest/1352/submission/151328382
B1. Palindrome Game (easy version)
题意:
有一个长度为n,只包含0或1的字符串,Alice和Bob轮流进行以下操作之一:
- 将字符串中的一个0修改为1,该操作花费为1;
- 如果当前字符串不是回文字符串且上家未进行操作2,那么可以花费0将字符串顺序逆置;
如果字符串所有的字符均为1,那么游戏结束
从Alice开始操作,求最后的结果(谁花钱少谁获胜,分Alice胜,Bob胜和平局)
问题的easy版本保证输入字符串一定是回文串,但hard版本不保证。
思路:题解很清楚。
- 把 k = count(‘0’) 的数量分类讨论。当 k 是偶数时,Bob 可以转化为 k = 2 的情况,也就是必胜点。当 k > 1是奇数时,Alice 可以选取中间的 ‘0’ 来把状态必败点转移给 Bob。
AC代码:https://codeforces.com/contest/1527/submission/151333952
B1. Palindrome Game (easy version)
题意:
在水平
O
−
x
O-x
O−x 轴上,你起始位置在
0
0
0 处,你的目标位置在
x
x
x 处,现在你可以进行一个操作,在进行第
i
i
i 次操作时,且你此刻位置在
y
y
y ,你可以选择:
- 将坐标 y y y 变为 y + k y+k y+k
- 将坐标 y y y 变为 y − 1 y-1 y−1
问你到达 x x x 的最小操作次数。
题解:B. Jumps(思维) Educational Codeforces Round 99 (Rated for Div. 2)
思路:找到第一个连续进行操作一到达的大于等于 x x x 的坐标 y 1 y_1 y1 ,可以证明当 y + 1 ≠ y 1 y+1≠y_1 y+1=y1 时可以将某个操作一转为操作二来跳到 y y y 。 y + 1 = y 1 y+1=y_1 y+1=y1 的情况也好处理。
AC代码:https://codeforces.com/contest/1455/submission/151336404
C1. k-LCM (easy version)
题意:给出一个正整数 n n n,找到 k k k 个正整数 a 1 , a 2... a k a1,a2 ... ak a1,a2...ak 使得他们的和等于 n n n ,且他们的最小公倍数小于等于 n / 2 n/2 n/2。简单版本中 k = 3 k=3 k=3
题解:Codeforces Round #708 (Div. 2) C1,C2 k-LCM 数学构造
AC代码:https://codeforces.com/contest/1497/submission/151375535
B. Reverse Binary Strings
题意:给你一个长度为 n n n (偶数)的二进制字符串,其中 0 0 0 字符和 1 1 1 的数量相同 。你可以选择任意长度的连续子串进行翻转。求最小反转次数使得字符串 01 01 01 交替。
题解:B. Reverse Binary Strings(思维)Educational Codeforces Round 97 (Rated for Div. 2)
思路:略。
AC代码:https://codeforces.com/contest/1437/submission/151378028