impala的substr从第几位截到最后一位_第0周周练题解

第0周题解

5b3cd7aad318e174e70286d23ba4d80e.png

    第0周的题解经过宣传部鸽子的努力延期了一周终于重见天日了。第0周的题目是5题杂题或数学题,给新生们练练手,也开始了解到什么是算法。我们本周每题选了优秀的题解。如果同学们刚刚入门不能想到正解,可以借鉴一下他人的思路,假手于人。但无论如何都希望同学们把每道题目都accepted了。

f4ffab296e3ed0fada87e385e084640c.png 02a27f59a6211ba3133e8685ece08d4a.png

第零题

题解来源:liangfy

点积最大的两个向量设为Pm和Pn,他们的点积为P = |Pm|*|Pn|*cosθ,此时分三种情况:

1. |Pm| = |Pn| ,此时 |Pm|² = |Pn|² > P;

2. |Pm |> |Pn| ,此时 |Pm|² > |Pm| * |Pn| > P;

3. |Pm| < |Pn| ,此时 |Pn|² > |Pm| * |Pn| > P;

上述三种情况都表明点积最大值应为某个向量与自身的点积,因此只需算出每个向量与自身的点积,求出最大值即可。

59e7940382dadcfcff471621aeb2b582.png 7a95639eb4e0fa3a892f200c979b0670.png

第一题

题解来源:linyt

【题意分析】

两个人轮流吃n道菜,每次每人吃且仅吃1到k道菜,无菜可吃的人要去洗碗。

【算法分析】

对于双方来说,除先手后手外,两者是绝对公平的且有相同目的,则有相同的策略。

那么考虑还有n道菜的情况:

a) 0 < n <= k,先手必胜

策略:先手直接吃n道菜,让对方无菜可吃并去洗碗

b) n = k + 1,后手必胜

策略:若先手吃x道菜,后手都能通过吃 (n-x) 道菜胜利。

c) n > k + 1,n % (k + 1) = 0,后手必胜

策略:若先手吃x道菜,后手都能通过吃 (k + 1 - x) 道菜转化为 c)或b)且作为新后手的情况

d)n > k + 1,n % (k + 1) != 0,先手必胜

策略:先手通过吃 n % (k + 1) 道菜转化为c)或b)且作为新后手的情况

9b65e2f7e4a2543a0cc45165c1b0f867.gif

第二题

题解来源:linyt

【题意分析】

求1到n的合法排列数,满足对任意 i,1 <= i <= n,不是排列的第i个数。

【算法分析】

错排公式:(等式最后一部分前面要×n!)

推理利用容斥原理,首先考虑全排列的数量为:

其中不符合条件的排列数为:

有一个i在位置i上的排列数 + 有两个i在位置i上的排列数 + 有三个i在位置i上的排列数 + … + 有n个i在位置i上的排列数

= 至少有一个i在位置i上的排列数 - 至少有两个i在位置i上的排列数 + 至少有三个i在位置i上的排列数 + … + (至少)有n个i在位置i上的排列数

至少有一个i在位置i上的排列数:选择一个i放在i位置,令其不合法,剩下的全排列,方案数为:

至少有两个i在位置i上的排列数:选择两个i,令其不合法,剩下的还是全排列,方案数为:

以此类推。

综上可得原式。

乘法逆元:

详见费马小定理和扩展欧几里得

负数取模与阶乘逆元:

详见小学数学

第三题

题解来源:linyt

【题意分析】

如题。

【算法分析】

把调和平均数和算数平均数相乘就得到了答案。

利用暴力做法打表找规律。

设n有m个约数,pi为n的第i个约数。

第四题

题解来源:huangzx

对于第i次实验,一瓶试剂只有两个状态,被检测了与没有被检测,而一次实验也只有两种状态,沉淀了与没沉淀。那么当所有的实验组合起来时,若每一瓶试剂的被检测的顺序和次数合起来时是独一无二的,那么若一瓶试剂每一次有它的实验都有沉淀,而每一次没有它的实验都没有沉淀,因为试剂的状态是独一无二的,所以我们可以确定就是这瓶试剂混有Na2So4。

抽象出来,把被检测看成1,没有检测看成0,一次实验就是一位数,其实就是让每一瓶试剂都拥有一个独一无二的二进制表示方法,值得注意的是00000也是一种状态,所以这道题目我们要真正要找的便是十进制的n-1在二进制下有几位数。

题解来源:linyt

【题意分析】

有n瓶溶液,其中出了一瓶叛徒,仪器能检测若干任意瓶溶液中有没有叛徒,所有仪器能且仅能同时使用一次,在能找出叛徒的前提下,求最少仪器数。

【算法分析】

1. 如果我们用一台仪器检测集合A的溶液,则A的补集的情况也可知。

2. 如果我们同时用一台仪器检测集合A的子集B的溶液和A的补集的子集C的溶液,与分别用两台仪器检测的效果相同。

3. 最坏情况下所用的最少仪器数为答案。

4. 如果获得的信息总量超过可能情况总量,则方案合法。

5. 如果信息总量不过剩,则方案最优。

那么我们就每次二分(信息总量不过剩)n瓶溶液,取大的(最坏情况)那一个集合A的溶液放置一个仪器,继续二分,做相同操作,直到仅剩一瓶溶液(信息总量足够),二分的次数即为答案(若答案在A的补集,操作数小于等于在集合A找出叛徒)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值