题目链接:https://codeforces.com/contest/1204/problem/E
题意:
给出n,m
,n
个1
和m
个-1
组成(comb[n+m][n]
个)数列
对所有数列的最大前缀和求和
思路:
首先,最大前缀和最小是0.
动态规划
状态:dp[n][m],有n个1,m个-1的数列最大前缀 总和
状态转移:
dp[i][j]=dp[i-1][j]+C(i+j-1,i-1)+dp[i][j - 1]+(-1)*(C(i+j-1,j-1)-最大前缀和为0的数列个数)
C(i,j)为组合数
我们固定地认为每当新加入一个数的时候将该数插入序列的最前方,这种设定仍然保证了动规涵盖所有可能的排列。
如果我们插入的是一个1,不管先前的序列排列如何,最大prefix sum一定会加1,由于i-1个1,j个-1对应的序列有C(i+j−1,i−1)种排列方法,所以当前状态增加的贡献为C(i+j−1,i−1)。
如果我们插入的是一个-1ÿ