中国十大网站建设,建设主题网站的顺序是什么,普通的宣传网站用什么做,dw建立网站之后怎么做解析
依然不会亚qwq 但这次至少有点上道了 (指推出了一个会导致重复计数的错误式子)
首先#xff0c;我们要选出碾压那些人#xff0c;方案数就是Cn−1kC_{n-1}^kCn−1k
然后#xff0c;我们要统计每门学科的排名情况 考虑比B神分数高的人一定是从没被碾压的人里选。所…解析
依然不会亚qwq 但这次至少有点上道了 (指推出了一个会导致重复计数的错误式子)
首先我们要选出碾压那些人方案数就是Cn−1kC_{n-1}^kCn−1k
然后我们要统计每门学科的排名情况 考虑比B神分数高的人一定是从没被碾压的人里选。所以对应的方案就是Cn−k−1ri−1C_{n-k-1}^{r_i-1}Cn−k−1ri−1设为fkf_kfk 但是这样随便选可能会导致有的应该没被碾压的人一直没被选到被碾压所以这个东西其实是至少碾压kkk人的方案数 那么使用常规的容斥套路这部分的答案就是fk−fk1fk2−...f_k-f_{k1}f_{k2}-...fk−fk1fk2−...
最后我们要统计每门学科的分数情况 设gu,a,bg_{u,a,b}gu,a,b表示总分数为uB神前面有a个人后面有b个人的方案数 枚举B神的分数 i那么就有 gu,a,b∑i−1u(u−i)a∗ibg_{u,a,b}\sum_{i-1}^u(u-i)^a*i^bgu,a,bi−1∑u(u−i)a∗ib 但是这个东西暴力算是On的 PS我就是卡在这里了qwq
考虑由于a和b非常少我们可以使用离散化的思路 设n个人的分数一共有t个取值 枚举t就有 gu,a,b∑t1ngt,a,b×Cutg_{u,a,b}\sum_{t1}^ng_{t,a,b}\times C_u^tgu,a,bt1∑ngt,a,b×Cut 里面的 g 可以暴力求解 问题得以解决
代码
#includebits/stdc.h
using namespace std;
const int mod1e97;
#define ll long long
#define il inline
il ll read(){ll x0,f1;char cgetchar();while(!isdigit(c)){if(c-)f-1;cgetchar();}while(isdigit(c)){xx*10c-0;cgetchar();}return x*f;
}
int n,m,k;
ll c[105][105],u[105],r[105],mx1000;
ll sum[105],jc[105],ni[105];
inline ll ksm(ll x,ll k){ll res1;while(k){if(k1) resres*x%mod;xx*x%mod;k1;}return res;
}
ll f[105][105];ll D[105];
inline ll g(ll u,ll a,ll b){ll res(0);for(int i1;iu;i){resf[u-i][a]*f[i][b];res%mod;}return res;
}
ll G(ll u,ll a,ll b){ll C1,ans0;//printf(\nG:u%lld a%lld b%lld\n,u,a,b);for(int t1;tn;t){ll nowg(t,a,b);for(int i1;it;i) now(now-D[i]*c[t][i]%modmod)%mod;D[t]now;CC*(u-t1)%mod*jc[t-1]%mod*ni[t]%mod;ansnow*C;ans%mod;//printf( t%d C%lld now%lld ans%lld\n,t,C,D[t],ans);}return ans;
}int main(){
#ifndef ONLINE_JUDGEfreopen(a.in,r,stdin);freopen(a.out,w,stdout);#endifnread();mread();kread();for(int i1;im;i) u[i]read();for(int i1;im;i) r[i]read(),mxmin(mx,n-r[i]);jc[0]1;for(int i1;i100;i) jc[i]jc[i-1]*i%mod;ni[n]ksm(jc[n],mod-2);for(int in-1;i0;i--) ni[i]ni[i1]*(i1)%mod;for(int i0;i100;i){f[i][0]1;for(int j1;j100;j) f[i][j]f[i][j-1]*i%mod;}c[0][0]1;for(int i1;in;i){c[i][0]1;for(int j1;ji;j){c[i][j](c[i-1][j-1]c[i-1][j])%mod;}}for(int i1;im;i){sum[i]G(u[i],r[i]-1,n-r[i]);//printf(i%d sum%lld\n,i,sum[i]);}ll ans0;for(int ok;on;o){ll nowc[n-k-1][n-o-1];//printf( i0 now%lld\n,now);for(int i1;im;i){//nownow*c[n-o-1][r[i]-1]%mod;nownow*c[n-o-1][r[i]-1]%mod*sum[i]%mod;//printf( i%d now%lld\n,i,now);}if((o-k)1){ans-now;if(ans0) ansmod;}else{ansnow;if(ansmod) ans-mod;}//printf(o%d now%lld ans%lld\n\n,o,now,ans);//printf(o%d now%lld\n,o,now);}//for(int i1;im;i){//ansans*sum[i]%mod;//printf(i%d ans%lld\n,i,ans);//}printf(%lld\n,ans*c[n-1][k]%mod);return 0;
}
/**/