Subset

Subset_第1张图片

Sort 一下 A
枚举子序列中的最大值A[i],其余的方案数是 C(i-1,k-1) 。
其实这个题 k 的范围根本无所谓

#include
#define mod 1000000007
#define ll long long
using namespace std;
ll n,k,a[1000000][60],u[1000000],v;
int main()
{
 cin>>n>>k;
    a[0][0]=1;
    for(ll i=1; i<=n; i++)
     for (ll j=0; j<=k; j++)
  {
   a[i][j]=a[i-1][j];
      if (j) a[i][j]+=a[i-1][j-1];
      a[i][j]%=mod;
     }
 for (ll i=0; i<n; i++)
     scanf("%lld",&u[i]);
 sort(u,u+n);
 for (ll i=0;i<n;i++) v=(v+u[i]*a[i][k-1])%mod;
 cout<<v;
 return 0;
}

你可能感兴趣的:(zr,A)