一个奇奇怪怪的数学问题

试从0 ~ N-1中取出X个数 , 使其和为C。

好吧这玩意是有一道CF的题乱搞不出来的副产品。
题目传送门 http://codeforces.com/contest/709/problem/D
题解传送门 http://blog.csdn.net/ceerrep/article/details/52314378

好吧就是想不出来然后一通乱搞,

a 00 = ∑ A [ i ] = 0 ( d 0 [ i − 1 ] ) a00=\sum_{A[i]=0}(d_0[i-1]) a00=A[i]=0(d0[i1])
a 01 = ∑ A [ i ] = 1 ( d 0 [ i − 1 ] ) a01=\sum_{A[i]=1}(d_0[i-1]) a01=A[i]=1(d0[i1])
a 10 = ∑ A [ i ] = 0 ( d 1 [ i − 1 ] ) a10=\sum_{A[i]=0}(d_1[i-1]) a10=A[i]=0(d1[i1])
a 11 = ∑ A [ i ] = 1 ( d 1 [ i − 1 ] ) a11=\sum_{A[i]=1}(d_1[i-1]) a11=A[i]=1(d1[i1])
然后推出了这个
a 01 + a 11 = ∑ A [ i ] = 1 ( i − 1 ) a01+a11=\sum_{A[i]=1}(i-1) a01+a11=A[i]=1(i1)
( a 10 + a 00 a10+a00 a10+a00同理)

上面那个式子就是 0 ∼ N − 1 0 \sim N-1 0N1中选出X个数的和。
a 11 = X ∗ ( X − 1 ) / 2 a11=X*(X-1)/2 a11=X(X1)/2 , a 00 = ( N − X ) ∗ ( N − X − 1 ) / 2 a00=(N-X)*(N-X-1)/2 a00=(NX)(NX1)/2
这样可以算出 { a 00 , a 01 , a 10 , a 11 } \{a00,a01,a10,a11\} {a00,a01,a10,a11}
然后应该就跟题解里一样算了(大概吧)……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值