ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[ZJOI2020]传统艺能

2020-07-09 16:05:00  阅读:316  来源: 互联网

标签:return Mat int res 艺能 ZJOI2020 inline 传统 mod


https://www.luogu.com.cn/blog/Thinking/solution-p6630

#include<bits/stdc++.h>
using namespace std;
#define fp(i,l,r) for(register int (i)=(l);i<=(r);++(i))
#define fd(i,l,r) for(register int (i)=(l);i>=(r);--(i))
#define fe(i,u) for(register int (i)=front[(u)];(i);(i)=e[(i)].next)
#define mem(a) memset((a),0,sizeof (a))
#define O(x) cerr<<#x<<':'<<x<<endl
#define int long long
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
	while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
	return x*f;
}
void wr(int x){
	if(x<0)putchar('-'),x=-x;
	if(x>=10)wr(x/10);
	putchar('0'+x%10);
}
const int mod=998244353;
inline void tmod(int &x){x%=mod;}
inline int qpow(int a,int b){
	int res=1;a%=mod;
	for(;b;b>>=1,tmod(a*=a))
		if(b&1)tmod(res*=a);
	return res;
}
inline int ginv(int x){return qpow(x,mod-2);}
struct Mat{
	int a11,a12,a13,a22,a23;
	inline Mat operator*(const Mat &b)const{
		return {a11*b.a11%mod,(a11*b.a12+a12*b.a22)%mod,(a11*b.a13+a12*b.a23+a13)%mod,
				a22*b.a22%mod,(a22*b.a23+a23)%mod};
	}
};
int ans,inv,n,K;
inline Mat qpow(Mat a,int b){
	Mat res={1,0,0,1,0};
	for(;b;b>>=1,a=a*a)
		if(b&1)res=res*a;
	return res;
}
void solve(int L,int R,int l,int r){
	if(L<R){
		int mid=read();
		solve(L,mid,L,R);solve(mid+1,R,L,R);
	}
	if(!l)tmod(ans+=inv);
	else{
		int a=(l*(l-1)+(n-r)*(n-r+1)>>1)%mod,
			b=(L*(r-R)+(n-R+1)*(L-l))%mod,
			c=l*(n-r+1)%mod,
			d=((l+L-1)*(L-l)+(n+n-R-r+1)*(r-R)>>1)%mod;
		tmod(ans+=qpow({(a+c)*inv%mod,d*inv%mod,b*inv%mod,(a+d)*inv%mod,(b+c)*inv%mod},K).a13);
	}
}
main(){
	n=read();K=read();inv=ginv(n*(n+1)/2);
	solve(1,n,0,0);
	printf("%lld\n",ans);
	return 0;
}

标签:return,Mat,int,res,艺能,ZJOI2020,inline,传统,mod
来源: https://www.cnblogs.com/misaka10047/p/13274201.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有