ICode9

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

「PKUSC2021」Sum Transformation 解题报告

2022-08-21 19:30:43  阅读:143  来源: 互联网

标签:ch PKUSC2021 read Sum 矩阵 Transformation sum 2n ll


题目描述

定义矩阵变换 \(F(P)=Q\),其中 \(P\) 和 \(Q\) 是\(n×n\) 的矩阵且满足 \(Q_{i,j}=(\sum^{n}_{k=1}P_{k,j}+\sum_{k=1}^nP_{i,k})mod\space p\)。给定 \(T,n,p\) 和 \(n×n\) 的初始矩阵 \(A\),求 \(A\) 经过 \(T\) 次变换后的结果矩阵。

输入格式

第一行三个整数\(T,n,p\) 。

后面 \(n\) 行,每行 \(n\) 个数,代表初始矩阵 。

输出格式

\(n\)行,每行 \(n\) 个数,代表结果矩阵。

样例

样例输入

3 2 10
1 2 3
4 5 6
7 8 9

样例输出

4 3 2
1 0 9
8 7 6

数据范围b

\(n≤100,T≤10^9,2≤p≤10^9+7,P_{i,j}<p\)

SOLUTION

我们设第\(i\)行的和为\(A[i]\),我们可以得到经过一次变换之后第\(i\)行的和\(A[i]'\)可以表示为:

\[A[i]'=sum+n*A[i] \]

\(sum\)为整个矩阵的和,

\[sum'=sum*2n \]

所以最终一次变换之前的A为

\[A_{finally}[i]=((A[i]*n+sum)*n+sum*2n)*n+(sum*2n)*2n... \]

化简为

\(A_{finally-1}[i]=n^{T-1}*A[i]+sum*(2^{T-1}-1)*n^{T-2}\)

\((2^{T-1}-1)\)这个地方本来应该是\(\sum_{i=0}^{T-2}2^i\)

证明:

设\(S=2^{0}+2^{1}+2^{2}+...\)

\(2S=2^1+2^2+...\)
\(S=2S-S=2^n-1\)

(注:底数不是2的就是\(\frac{x^n-1}{x-1}\))

然后我们可以处理出\(T-1\)次操作后的\(sum,A,B\),直接计算第\(T\)次矩阵即可

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=1e3+2;
ll n,T,p,sum,val,A[N],B[N];
inline ll read(){
    register ll x=0, t=1;
    register char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            t=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*t;
}
ll power(ll a,ll b){
	ll res=1;
	while(b){
		if(b&1) res=res*a%p;
		a=a*a%p;
		b>>=1;
	}
	return res;
}
int main(){
	n=read(),T=read(),p=read();
    for(ll i=1; i<=n; i++){
    	for(ll j=1,x; j<=n; j++){
    		x=read();
			A[i]=(A[i]+x)%p;
			B[j]=(B[j]+x)%p;
			sum=(sum+x)%p;
		}
	}
    ll val=(sum*(power(2,T-1)-1+p)%p*power(n,T-2)%p)%p,t=power(n,T-1);
    for(ll i=1; i<=n; i++){
		A[i]=(val+t*A[i]%p)%p;
		B[i]=(val+t*B[i]%p)%p;
	}
    for(ll i=1; i<=n; i++){
        for(ll j=1; j<=n; j++){
        	printf("%lld ",(A[i]+B[j])%p);
		}
        printf("\n");
    }
    return 0;
}

完结撒花❀

★,°:.☆( ̄▽ ̄)/$:.°★

标签:ch,PKUSC2021,read,Sum,矩阵,Transformation,sum,2n,ll
来源: https://www.cnblogs.com/Aurora1217/p/16610627.html

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

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

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

ICode9版权所有