A - Lucky Ticket

Problem - A - Codeforces

题意

判断一个数是否满足条件:

  1. 只由 $4,7$ 组成。
  2. 前半段之和等于后半段之和(保证长度是偶数)

题解

模拟即可。

B - Luck Mask

Problem - B - Codeforces

题意

大于 $a$ 的,面罩数 $b$ 的,最小的 $c$ 并输出。

面罩数:按照从高位到地位的顺序把一个数中所有 $4,7$ 按顺序凭借在一起

题解

do while 找符合条件的最小 $c$,注意一定是大于。

C - Lucky Conversion

Problem - C - Codeforces

题意

你有两个序列 $a,b$,有两种操作:

  1. 修改 $a$ 中的一个字符从 $4$ 到 $7$ 或者从 $7$ 到 $4$ 。
  2. 交换 $a$ 中任意两个字符

题解

考虑修改最多可以让多少个字符变得正确(只能修改把 $7$ 和 $4$ 的数量补到相等的次数)然后剩余的还不相等就交换,交换次数除以二。

D - Lucky Number 2

Problem - D - Codeforces

题意

构造一个由 $4,7$ 构成的序列,满足其拥有 $a1$ 个 $4$、$a2$ 个 $7$、$a3$ 个 $47$、$a4$ 个 $74$ 。无解输出 $-1$ 。

题解

首先判断无解:abs(a3 - a4) > 1 / min(a1, a2) <= max(a3, a4)

随后开始构造。分三种情况讨论:

  1. $a3 = a4$,这里还有一个隐藏的无解:a1 <= a3 && a2 <= a4;剩下的没什么难度
  2. $a3 > a4$,手模即可
  3. $a3 < a4$,仍然手模

E - Lucky Subsequence

Problem - E - Codeforces

题意

给一个序列 $a$,选择一个下标子序列 $b$,满足幸运数不重复且长度为 $k$ 。

幸运数:只由 $4,7$ 组成的数字。

题解

很容易考虑到可以把普通数和幸运数分开考虑。普通数就是正常组合数学,幸运数就是显然的动态规划了。

注意到幸运数总共就只有 $1022$ 个,所以可以直接 $O(n^2)$ DP 处理,设状态为 $dp[i][j]$ 表示前 $i$ 种数选择 $j$ 个的方案数。

实际上这道题远远不足蓝题,都能被我场切那一定是红题了