最近我们一直在将收集到的机试真题制作数据并搬运到OJ上,供大家免费练习,体会真题难度。现在已录入60+道2022/23年最新大厂真题,同时在不断的更新。关注"塔子哥学算法"公众号获得网址以及每道题的题解+代码。
米小游拿到了一个矩阵,矩阵上有一格有一个颜色,为红色( R
)。绿色( G
)和蓝色( B
)这三种颜色的一种。
然而米小游是蓝绿色盲,她无法分游蓝色和绿色,所以在米小游眼里看来,这个矩阵只有两种颜色,因为蓝色和绿色在她眼里是一种颜色。
米小游会把相同颜色的部分看成是一个连通块。请注意,这里的连通划是上下左右四连通的。
由于色盲的原因,米小游自己看到的连通块数量可能比真实的连通块数量少。
你可以帮米小游计算连通块少了多少吗?
第一行输入两个正整数 n n n 和 m m m ,代表矩阵的行数和列数。
接下来的 n n n 行,每行输入一个长度为 m m m 的,仅包含 R
、G
、B
三种颜色的字符串,代表米小游拿到的矩阵。
1 ≤ n , m ≤ 1000 1\le n,m\le 1000 1≤n,m≤1000
一个整数,代表米小游视角里比真实情况少的连通块数量。
输入
2 6
RRGGBB
RGBGRR
输出
3
样例解释
米小游视角里有 3 3 3 个连通块,而实际上有 6 6 6 个连通块,所以米小游视角的连通块数量比真实情况少了 3 3 3 个。
米小游拿到了一个字符串 s
。她可以进行任意次以下两种操作:
s
的一个 "mhy"
子序列。"mhy"
子序列在 s
上。例如,给定 s
为 "mhbdy"
,米小游进行一次操作后可以使 s
变成 "bd"
,或者变成 "mhmbhdyy"
。
米小游想知道,经过若干次操作后 s
是否可以变成 t
?
注:子序列在原串中的顺序也是从左到右,但可以不连续。
第一行输入一个正整数 q q q ,代表询问的次数。
接下来每两行为一次询问:每行均为一个字符串,分别代表 s
和 t
。
1 ≤ q ≤ 1 0 3 1\le q\le 10^3 1≤q≤103
字符串的长度均不超过 1 0 3 10^3 103 。
输出 q
行,每行输入一行答案。若可以使 s
变成 t
,则输出 "Yes"
。否则输出 "No"
。
输入
3
mhbdy
bd
mhbdy
mhmbhdyy
mhy
abc
输出
Yes
Yes
No
米小游拿到了一个集合(集合中元素互不相等)。
她想知道,该集合有多少个元素数量大于 1 1 1 的子集,满足子集内的元素两两之间互为倍数关系?
由于数量可能过大,请对 1 0 9 + 7 10^9+7 109+7 取模。
第一行输入一个正整数 n n n ,代表集合大小。
第二行输入 n n n 个正整数 a i a_i ai ,代表集合的元素。
1 ≤ n ≤ 1 0 5 1\le n \le 10^5 1≤n≤105
1 ≤ a i ≤ 1 0 6 1 \le a_i \le 10^6 1≤ai≤106
一个整数,代表满足题意的子集数量对 对 1 0 9 + 7 10^9+7 109+7 取模的值。
输入
5
1 2 3 4 5
输出
6
样例解释
共有6个合法的子集:
{1,2},{1,3},{1,4},{1,5},{1,2,4},{2,4}