這題是均分紙牌求方案數

我們可以分2種情況討論:

1.當前面部分的平均值>=現在我們要的值

那麼我們可以把所有牌都放到第i個點,現在若有k張牌,則要把k−i∗avek-i*avek−i∗ave張牌放到後面

對答案的貢獻為c(a[i],k−i∗ave)c(a[i],k-i*ave)c(a[i],k−i∗ave),要更新現在的元素值

2.當前面部分平均值<現在我們要的值

那麼我們可以從後面抓i∗ave−ki*ave-ki∗ave−k張牌

由於我們要讓所有部分有aveaveave張牌,所以我們後面需要有ave+i∗ave−kave+i*ave-kave+i∗ave−k張牌,才可以讓抓牌後這部分有aveaveave張牌

所以對答案的貢獻為c((i+1)∗ave−s[i],i∗ave−s[i])c((i+1)*ave-s[i],i*ave-s[i])c((i+1)∗ave−s[i],i∗ave−s[i])

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mo 998244353ll
ll t,n,a[1010],jc[1000010],ijc[1000010],s[1010];
ll qp(ll x,ll y){
	ll r=1;
	while(y){
		if(y&1)r=r*x%mo;
		x=x*x%mo;
		y>>=1;
	}
	return r;
}
void get(){
	jc[0]=1;
	for(ll i=1;i<=1000005;i++)
		jc[i]=jc[i-1]*i%mo;
	ijc[0]=1;
	for(ll i=1;i<=1000005;i++)
		ijc[i]=ijc[i-1]*qp(i,mo-2)%mo;
}
ll c(ll x,ll y){
	return jc[x]*ijc[x-y]%mo*ijc[y]%mo;
}
int main(){
	freopen("gwent.in","r",stdin);
	freopen("gwent.out","w",stdout);
	scanf("%lld",&t);
	get();
	while(t--){
		scanf("%lld",&n);
		for(ll i=1;i<=n;i++)
			scanf("%lld",&a[i]);
		for(ll i=1;i<=n;i++)
			s[i]=s[i-1]+a[i];
		ll k=s[n]/n,ans=1;
		for(ll i=1;i<=n;i++){
			ll va=s[i]-k*i;
			if(va>=0){
				ans=ans*c(a[i],va)%mo;
				a[i]-=va;
				a[i+1]+=va;
			}
			else ans=ans*c(-va+k,-va)%mo;
		}
		printf("%lld\n",ans);
	}
}

jzoj5945的更多相关文章

随机推荐

  1. IIS不能下载.apk文件

    IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. 打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性: 单击MIME类型下的“MIME类 ...

  2. spring boot2.03 spring cloud Finchley.RELEASE遇到的问题

    1.spring cloud bus 本地不能更新 原因是@RefreshScope注解要加在需要更新的controller上 2.No instances found of configserver ...

  3. HDU_1022

    题目: As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want t ...

  4. php调java接口

    1.下载二进制的 JavaBridge.jar包.java/Java.inc库文件,下载地址:http://php-java-bridge.sourceforge.net/pjb/download.p ...

  5. com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider

    一月 31, 2016 5:06:31 下午 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting f ...

  6. 如何优化Mysql数据库

    1.添加主键ID 2.尽量避免使用select * form table 3.创建索引     对于查询占主要的应用来说,索引显得尤为重要.很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或 ...

  7. 2018.10.09 NOIP模拟 世界杯(图论+set优化)

    传送门 貌似是防akakak题? 不是很清楚. 事实上如果两个人没有严格的大小关系,我们给他们两个连一条边. 这样可以构成很多连通块. 而且对于连通块a,ba,ba,b,aia_iai​和bjb_jb ...

  8. Nginx中间件使用心得(三)

    一.Nginx搭建系统需求 1.系统硬件:CPU >= 2Core,内存 >= 256M      2.自行搭建服务器(Linux操作系统) (1) 使用vmWare虚拟服务器 (2)使用 ...

  9. 全国各地dns服务器列表

    211.103.13.101 江苏省无锡市 移动DNS服务器 211.136.28.231 北京市 移动DNS服务器 211.136.28.234 北京市 移动DNS服务器 211.136.28.23 ...

  10. Easy CHM使用简明教程

    近日整理硬盘,发现下载有许多DOC.JPEG.HTML等 格式的学习资料,也包括一些电子书资料:而其中的DOC.HTML等资料在学习浏览时显得很不方便,不同格式的文件需要使用不同的打开方式.近而发现电 ...