一个奇奇怪怪的数学问题

试从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}
然后应该就跟题解里一样算了(大概吧)……

你可能感兴趣的:(数学,构造)