ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Google Code Jam 2021 Round1A 题解

2021-04-10 17:36:25  阅读:207  来源: 互联网

标签:道题 score 题解 SUM Round1A Code Test MUL Set


Append Sort

贪心。对于\(i \ge 2\),每次将\(s_i\)修改成所有满足条件的中最小的那个。

不妨将\(s_i\)看成字符串。

如果\(s_i\)是\(s_{i - 1}\)的前缀,那么一个可能的解是\(t = str(int(s_{i - 1}) +1)\),或者不断补0直至\(len(s_i) = len(s_{i - 1}) + 1\)。前者若可行则会更优。

如果\(s_{i - 1} < s_i\),不断补0直至长度相等。

否则,不断补0直至\(len(s_i) = len(s_{i - 1}) + 1\)。

Prime Time

Test Set 1

\(\sum_i N_i\)很小,可以直接暴力枚举。

记\(SUM\)为集合1的和,\(MUL\)为集合2的乘积。

假设一开始所有数都属于集合1,不断尝试将集合1中的某个数移到集合2。

Test Set 2

由于\(SUM\)至多为\(499 \times 100\),所以可行的\(MUL\)也至多为这个数,差不多在\(2^{16}\)左右。所以还是可以暴力枚举判断,只需要加加剪枝就可以了。

枚举过程中,若\(MUL > SUM\),则后续的枚举就可以剪掉。

Test Set 3

现在\(SUM\)至多为\(499 \times 10^{15}\),差不多在\(2^{60}\)左右,暴力枚举已经不太行了。

可以推出集合2中至多有60个元素,由此可以推出集合2中的元素之和有一个非常宽松的上界\(499 \times 60 = 29940\),这又可以推导出可能的\(SUM\)至多有\(29940\)个。

枚举所有可能的\(SUM\),若可行,则\(MUL = SUM\),对\(MUL\)进行质因数分解,在判断是否可行就可以了。由于\(MUL\)可能的质因数为输入的素数,所以这里质因数分解其实挺快的。

Hacked Exam

Test Set 1

无脑暴力。

Test Set 2

n=1

记\(p_i\)表示第\(i\)道题,答案和学生1相同的概率,那么若\(p_i \ge \frac{1}{2}\),第\(i\)道题就和学生1填一样的,反之填和学生1相反的。

\(q\)道题中有\(score_1\)道题是对的,共\(C_{q}^{score_1}\)种方法。

如果学生1第\(i\)道题是对的,那么现在就是\(q - 1\)道题种,有\(score_1 - 1\)道题是对的,共\(C_{q - 1}^{score_1 - 1}\)种方法。即:

\[p_i = \frac{C_{q - 1}^{score_1 - 1}}{C_{q}^{score_1}} = \frac{score_1}{q}。 \]

n=2​

可以用动态规划(记忆化搜索)做。

记\(f(s_1, s_2, i)\)为仅考虑第\(i\)道以及之后的问题,且满足此时学生1的分数为\(s_1\),学生2的分数为\(s_2\),的方法数。

那么\(f(s_1, s_2, i) = f(s_1 - g(1, i, T), s2 - g_2(i, T),i + 1) + f(s_1 - g(1, i, F), s_2 - g(2, i, F), i + 1)\)。

其中,\(g(a, b, c)\)表示若正确答案为\(c\),第\(a\)个学生第\(b\)道题的得分。

那么,第\(1\)道题的答案为T的概率就是

\[p_1 = \frac {f(s_1 - g(1, 1, T), s_2 - g(2, 1, T), 2)} {f(s_1, s_2, 1)}。 \]

时间复杂度为\(O(Q^3)\)。

由于问题的顺序并不会影响最终的结果,所以可以每次将题目\(i\)移动到第1个位置,然后跑出\(p_i\)。这样子的时间复杂度为\(O(Q^4)\)。

其实对于所有学生1给出答案T,学生2给出答案T的题目,这些题目其实是等价的,同理可以类推,一共有\(4\)种类型的题目(TT,TF,FT,FF)。每种类型跑一遍记录下来就可以了,没有必要跑多次。这样子的时间复杂度为\(O(Q^3)\)。

其实,\(P_{TT} = 1 - P_{FF}, P_{TF} = 1 - P_{FT}\),所以也可以只跑\(P_{TT}, P_{TF}\),再去推\(P_{FF}, P_{FT}\)。

Test Set 3

TO BE SOLVED.

标签:道题,score,题解,SUM,Round1A,Code,Test,MUL,Set
来源: https://www.cnblogs.com/zengzk/p/14641550.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有