OPPO 0315 c卷 笔试题
20 道选择题+3 道编程题
选择题:Linux命令,try catch finally异常处理,Mysql语句,HTTP,CPP代码题,Java代码题等(CPP 选手表示不会Java)
编程题:
1. 我们有一个大小为 n 的数组 a1, a2, ..., an 。我们可以选择一个元素 ai ,将其变成它的相反数 ai → (-1) × ai 。如果此时数组的和在区间 0, t 内,那么这个选择是“好的”。我们的目标是计算有多少种选择是“好的”。
2. 题目要求我们计算删除数组中每个元素后的 MEX 值。MEX 的定义是数组中未出现的最小非负整数。例如:
数组 0, 1, 2 的 MEX 是 3 ,因为 3 是未出现的最小#非负整数。
数组 1, 2, 3 的 MEX 是 0 ,因为 0 是未出现的最小非负整数。
我们需要为数组中的每个元素 ai ,计算删除 ai 后剩余数组的 MEX 值,并输出结果。
3. 给定一个长度为 n 的字符串 s,其中某些位置可能为问号(?),问号可以被替换为任意数字。求所有可能的替换方式中,使得 s 表示的数字是 3 的倍数的个数。结果需要对 10^9 + 7 取模。注意,不能有前导零(例如,03 不是有效的数字)。#OPPO笔试# #笔试# #26届暑期实习#
选择题:Linux命令,try catch finally异常处理,Mysql语句,HTTP,CPP代码题,Java代码题等(CPP 选手表示不会Java)
编程题:
1. 我们有一个大小为 n 的数组 a1, a2, ..., an 。我们可以选择一个元素 ai ,将其变成它的相反数 ai → (-1) × ai 。如果此时数组的和在区间 0, t 内,那么这个选择是“好的”。我们的目标是计算有多少种选择是“好的”。
2. 题目要求我们计算删除数组中每个元素后的 MEX 值。MEX 的定义是数组中未出现的最小非负整数。例如:
数组 0, 1, 2 的 MEX 是 3 ,因为 3 是未出现的最小#非负整数。
数组 1, 2, 3 的 MEX 是 0 ,因为 0 是未出现的最小非负整数。
我们需要为数组中的每个元素 ai ,计算删除 ai 后剩余数组的 MEX 值,并输出结果。
3. 给定一个长度为 n 的字符串 s,其中某些位置可能为问号(?),问号可以被替换为任意数字。求所有可能的替换方式中,使得 s 表示的数字是 3 的倍数的个数。结果需要对 10^9 + 7 取模。注意,不能有前导零(例如,03 不是有效的数字)。#OPPO笔试# #笔试# #26届暑期实习#
全部评论
笔试三道a了,上午一看复筛不通过
第二题:
先计算原始数组的 MEX 值,就用set去重,从mex=0开始找第一个没出现的就是了,记为 origin_mex 。如果删除某个元素后,剩余数组的 MEX 值可能小于或等于origin_mex 。使用一个哈希表统计数组中每个元素的次数。然后遍历数组nums,判断当前元素值是否小于origin_mex且只出现了一次,那么删掉该元素后数组的新mex就是它自己,同理就能得到全部答案了。
第一题:
先计算原始数组元素和sum ,遍历数组,对于每个元素 ai ,计算将其变为相反数后的新和 new_sum = sum - ai + (-ai) = sum - 2 * ai ,然后判断newsum是否在区间内:如果 0 ≤ new_sum ≤ t ,则这个选择是“好的”,遍历完所有元素后,计算满足条件的“好的”选择数量。
第三题:
使用动态规划来记录当前字符串前缀的余数(模 3 的结果)。对于每个字符,如果是数字,则更新余数;如果是 ? ,则枚举所有可能的数字(0-9),并更新余数。设 dp[i][r] 表示前 i 个字符的余数为 r 的方案数。对于每个字符,更新 dp[i][r]的值。还需要排除前导零的情况,如果字符串的第一个字符是 ?,则不能替换为 0 。最终结果存储在 dp[n][0],表示整个字符串的模3余数为 0 (即3的倍数)的方案数。
复筛算是笔试通过了吗
复筛挂了,逆天
相关推荐
点赞 评论 收藏
分享
03-17 10:37
Nanyang Technological University Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享