【组合数学】经典方程的对偶方程、一个不等式问题(例题:acwing1312 序列统计)

经典方程的对偶方程

方程,指经典方程sum(x[j]) = n, 1 <= j <= m, x[j] >= 0。它的解的个数很容易求,设有n个球和m-1个隔板,则隔板间的空隙有m个且允许为空,故解数C(n+m-1,n)

它的对偶问题是什么呢?设以上经典方程为(m,n),并设对偶问题为(p,q),则:

p+q-1 = n+m-1

q = m-1(注意,不可能是q = n

于是解得(n+1,m-1)。这意味着sum(x[j]) = m-1, 1 <= j <= n+1, x[j] >= 0的解数和原方程的解数相同。我们代入即可验证,对偶方程的对偶方程就是原方程。

一个不等式问题

不等式,指sum(x[j]) <= n, 1 <= j <= m, x[j] >= 0。我们构造一个新变量x[0] >= 0,则得到一个方程(m+1,n)(沿用上面约定的记号)。只需要证明解相互包含即可证明它们解数相同。

一个原不等式的解,总对应着新方程的x[0] = n-sum(x[j])的解,所以原不等式的解数 <= 新方程。一个新方程的解,总对应着一个原不等式的解,因为它们都满足原不等式的要求,所以新方程的解数 <= 原不等式。证毕。

acwing1312 序列统计

传送门

(我交不了555)

题意:给定三个正整数N,L,R,统计长度在1N之间,元素大小都在LR之间的单调不降序列的数量。

N,L,R都是1e9,模1e6+3,多组样例。

首先元素大小改成都在0 ~ R-L+1之间。固定数组长度为k,即求0 <= a[1] <= ... <= a[k] <= R-L的方案数。再考虑设变量x[i] = a[i] - a[i-1], x[1] = a[1],于是求sum(x[i]) <= R-L, x[i] >= 0的解数即可(注意这里有k个不等式要满足,但最后一个不等式满足即可满足前面的,所以只指出这一个)。

根据《一个不等式问题》,我们得到它等价于方程(k+1,R-L),解数C((k+1)+(R-L)-1,(k+1)-1) = C(k+(R-L),k)

接下来我们需要求ans = sum(C(k+R-L,k)),k >= 1,即ans = sum(C(k+R-L,k)) - 1,k >= 0。不妨把k换成R-L,即C(R-L+k,R-L)。这个求和式是变量个数在变,总和为定值,不好处理,不妨用《经典方程的对偶方程》的结论来转化。(k+1,R-L) <=> (R-L+1,k),再根据《一个不等式问题》,求和式对应的方程是(R-L+2,n),所以ans = C(R-L+1+n,n) - 1

总结:反复使用上面介绍的两个结论即可解决。

再解决一个经典问题

sum(C(n+i,i)),0 <= i <= m

C(n+i,i)表示的方程是(x,y),则

x+y-1 = n+i

y = iy = n不太方便,因为这样导致变量个数在变)

x = n+1, y = i。根据《一个不等式问题》,原问题就是方程(n+2,m),所以ans = C(n+m+1,m)

同理,可证
C n + 1 k + 1 = ∑ i = 0 n C i k C_{n+1}^{k+1}=\sum_{i=0}^n C_i^k Cn+1k+1=i=0nCik
证明:C(i,k)对应方程(k+1,i-k)的解数,推出ans对应方程(k+2,n-k)的解数。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值