各位同学们,我们比赛结束后将马上进行颁奖仪式,请大家结束比赛后到202机房集合,谢谢,希望大家都能获得一个好成绩!

Date: 2018-12-22 09:00:07

0 钞哥拒绝吃土:这是一道水题,遍历这个数组把每个宝贝的价值保存下来相加即可。唯一一个坑点是最后的和会爆int,用long long即可。(PS:本来这题想搞点事情的,比如每个价值可能是小数,最后的答案要用大数等等,后来想想签到题还是不搞你们了~善良的学长学姐)

1 钞哥的钞票:这也是一道水题,暴力遍历数组判断即可。(全场最水~)

3 钞哥的百变二进制:这题也是水题(会不会被打?逃)。根据题意,当b[i]为1时,无论a[i]为0还是为1,按位或之后第i位的值都为1,所以这种情况就不需要考虑了。考虑b[i]为0的情况,第一感觉就是若a[i]为0,则需找a[i]为1的有几位即可;若a[i]为1,则需找a[i]为0的有几位即可。但这样会存在重复的情况,就比如说样例。所以标解是统计b[i]为1的那些位中a[i]=0的个数num0,a[i]=1的个数num1,b[i]为0的那些位中a[i]=1的个数tmp0,a[i]=1的个数tmp1。ans = tmp0*(num1+tmp1)+tmp1*num0 。

4 钞哥抢金块:一个非常简单的博弈,当(n+1)为3的倍数时先手必败,否则先手必胜。

5 钞哥之遗忘曲线:这题原来是个水题,c的范围为[1,1000],后来被一个学长改成了[1,1e15],太过分了!标解是先离散化,再用一个数组映射即可。离散化:虽然c<=1e15,但n只有5e6个,所以最多出现n个不同的数字,把这些不同的数字重新标号,就能用一个数组存下,然后去映射啦!具体实现可以用先排序然后依次标号或直接用stl的map。

6 解救男朋友2:简单dp。开一个dp[2][1024],前一维表示2个状态间(now、pre)的转移,后一个表示当前状态下和为sum的情况数。动态转移方程为:dp[now][j+a[i]]+=dp[pre][j] 。

7 钞哥与数字2:这题是一个超级简单粗暴的打表题。可以看到数据组数T非常大,所以不能对每组数据都算一遍上述公式得到答案。因此,我们可以在T这个循环外打表,即把所有n的情况都算出来,保存在数组中。最后对于T组数据每个询问直接输出即可。

8 钞哥之家产继承:这题是一个防ak题,一个很巧妙的思维题。对等式进行拆分:sum(g=0 -> nm) (g+1)Ag = sum(g=0 -> nm) gAg + sum(g=0 -> nm) Ag

后半部分等于A0+A1+…+Anm,就等于所有可能的情况数 = k^(nm)。

前半部分相当于每个格点的贡献和。贡献定义为每个格点当一次Great cell贡献就+1。
那么对于每个格点来说,当它选的数字是i,那么它所在行列的其他数字的选择种类数 = (i-1)^(n+m-2)种,剩余格点可以随便放,种类数 = k^(n-1)(m-1) 种,所以每个格点的贡献 = (i-1)^(n+m-2)* k^(n-1)(m-1),i属于[2,K]。
总共有nm个格点,所以最后的答案 =nm * sum(i=2 -> k) (i-1)^(n+m-2)* k^(n-1)(m-1) + k^(n*m) 。

题解到这结束了,标程可以参考博客:https://blog.csdn.net/luyehao1/article/details/85209754
大家可以加QQ群593535607讨论。新生赛终于结束了,祝大家新年快乐,天天AC。enjoy the game。