标题
思绪泉源
官方题解
题解
特别球不会改变平常球的次序,以是都是alice拿一半里较多的部分
n-k+1一半向上取整就是(n-k+2)/2,同理n-k个一半向上取整(n-k+1)/2
每个特别球独立地来看,在每个安定的概率雷同
以是分别统计特别球和非特别球的分数
别的一个做法是,根据E(x+y)=E(x)+E(y),
可以把特别球的总分集在一个特别球上,平常球同理
也可以看成是摊成均匀分摊在这多少个球上
代码
- #include<bits/stdc++.h>
- using namespace std;
- #define rep(i,a,b) for(int i=(a);i<=(b);++i)
- #define per(i,a,b) for(int i=(a);i>=(b);--i)
- typedef long long ll;
- typedef double db;
- typedef pair<int,int> P;
- #define fi first
- #define se second
- #define pb push_back
- #define dbg(x) cerr<<(#x)<<":"<<x<<" ";
- #define dbg2(x) cerr<<(#x)<<":"<<x<<endl;
- #define SZ(a) (int)(a.size())
- #define sci(a) scanf("%d",&(a))
- #define pt(a) printf("%d",a);
- #define pte(a) printf("%d\n",a)
- #define ptlle(a) printf("%lld\n",a)
- #define debug(...) fprintf(stderr, __VA_ARGS__)
- using namespace std;
- const int N=4e5+10,mod=1e9+7;
- int t,n,k,inv[N],s1,s2,sum,v,alice,bob;
- int halfmore(int x){
- return (x+1)/2;
- }
- int main(){
- inv[0]=inv[1]=1;
- rep(i,2,N-1)inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
- sci(t);
- while(t--){
- sum=s1=s2=0;
- sci(n);sci(k);
- rep(i,1,n){
- sci(v);
- sum=(sum+v)%mod;
- if(i<=k)s1=(s1+v)%mod;
- else s2=(s2+v)%mod;
- }
- s1=1ll*s1*inv[k]%mod;
- s2=1ll*s2*inv[n-k]%mod;
- int blank=n-k+1,ball=n-k;
- alice=(1ll*halfmore(blank)*k%mod*inv[blank]%mod*s1%mod+1ll*halfmore(ball)*s2%mod)%mod;
- bob=(sum+mod-alice)%mod;
- printf("%d %d\n",alice,bob);
- }
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |