文章目录
- C - Be Together
- D - Unbalanced
- E - Children and Candies
- F - Unhappy Hacking
题目链接
C - Be Together
200200200分 结论
直接取所有数的平均数,由于需要是整数,所以算一下mid,mid+1,mid−1mid,mid+1,mid-1mid,mid+1,mid−1,取最小值即可。
代码
D - Unbalanced
400400400分 结论
不难发现如果有一段是合法的那么一定存在长度为222或者333的串合法,直接找即可。
代码
E - Children and Candies
800800800分 dpdpdp + 前缀和优化
题面太阴间了,简单解释一下。
有nnn个小朋友,ccc个糖果,如果第iii个小朋友分了aaa个糖果,那么他得到的快乐值是xiax_{i}^axia,一个幼儿园的快乐值是小朋友快乐值乘积,定义f(x1,x2,...,xn)f(x_1,x_2,...,x_n)f(x1,x2,...,xn)为一个幼儿园的快乐值,现在让你计算:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d6J2qEfu-1645840763184)(C:\Users\Libra_Glow\AppData\Roaming\Typora\typora-user-images\image-20220226094553741.png)]
显然考虑dpdpdp,dp[i][j][k][p]dp[i][j][k][p]dp[i][j][k][p] 表示到第iii个人,已经分了jjj个,要分给他kkk个,当前选了xi=px_i=pxi=p,转移方程也比较明显dp[i][j][k][p]+=∑t=0j−k∑h=ai−1bi−1dp[i−1][j−k][t][h]dp[i][j][k][p]+=\sum_{t=0}^{j-k}\sum_{h=a_{i-1}}^{b_{i-1}}dp[i-1][j-k][t][h]dp[i][j][k][p]+=∑t=0j−k∑h=ai−1bi−1dp[i−1][j−k][t][h],可以发现对于第三维和第四维我们可以使用前缀和优化掉,更进一步可以发现根本不需要存第三维和第四维,直接记dp[i][j]dp[i][j]dp[i][j]即可,预处理一下[ai,bi][a_i,b_i][ai,bi]的区间取某个幂次的和即可,复杂度可以降到O(n3)O(n^3)O(n3)
代码
F - Unhappy Hacking
800800800分 dpdpdp
直接考虑dp[i][j]dp[i][j]dp[i][j]表示用了iii次操作,匹配到了第jjj位,一开始没想出来,因为是将jjj放到了第一层循环,以长度作为dpdpdp决策的转移,也就是考虑dp[i][j],dp[k][j−1]dp[i][j],dp[k][j-1]dp[i][j],dp[k][j−1],这样显然是不好搞的,考虑反过来,以操作次数作为决策点,i−1−>ii-1 -> ii−1−>i只进行了一次操作,显然就只有三个情况,我们依次考虑:
- dp[i][j]+=dp[i−1][j−1]dp[i][j]+=dp[i-1][j-1]dp[i][j]+=dp[i−1][j−1] 当前操作打111或者000,根据第jjj位确定
- dp[i][j]+=dp[i−1][j+1]∗2dp[i][j]+=dp[i-1][j+1]*2dp[i][j]+=dp[i−1][j+1]∗2 当前操作选择按回退,因为我们并不关心j+1j+1j+1位是000还是111,所以需要乘222。
注意j=0j=0j=0的时候还需要加上f[i−1][0]f[i-1][0]f[i−1][0]。
复杂度O(n2)O(n^2)O(n2)
代码
还有一种比较巧妙的方法,可以知道长度为lenlenlen的字符串出现的概率都相等,所有情况是2len2^{len}2len,所以我们如果能求出来所有的情况,除上2len2^{len}2len即可。
设dp[i][j]dp[i][j]dp[i][j]表示用了iii次操作,长度为jjj的方案数,直接写转移了:
- dp[i][j]+=dp[i−1][j−1]∗2dp[i][j]+=dp[i-1][j-1]*2dp[i][j]+=dp[i−1][j−1]∗2 当前操作打1,01,01,0,所以需要乘222
- dp[i][j]+=dp[i−1][j+1]dp[i][j]+=dp[i-1][j+1]dp[i][j]+=dp[i−1][j+1] 按回退,由于f[i−1][j+1]f[i-1][j+1]f[i−1][j+1]的方案就已经包含了j+1j+1j+1是0,10,10,1的两种情况,所以不需要乘222。
复杂度O(n2)O(n^2)O(n2)
代码