2020 CCPC网络选拔赛 3x3 Convolution

  • 题意
    这个题我估计很多人都是卡到题意上了,妈的,公式一大堆。给一个N*N的矩阵和 3 ∗ 3 3*3 33的矩阵,起初给的 3 ∗ 3 3*3 33矩阵是K’,要想转换为K,只需将对应元素/矩阵元素的总和。定义矩阵
    C ( A , K ) = C ( C [ A ] [ K ] , K ) C(A,K)=C(C[A][K],K) C(A,K)=C(C[A][K],K)
    C [ A ] [ K ] C[A][K] C[A][K]是这样计算的:以 A [ i ] [ j ] A[i][j] A[i][j]作为 3 ∗ 3 3*3 33矩阵的左上角,往右下扩展成 3 ∗ 3 3*3 33的一个矩阵,如果出边界了,默认就是0。然后这个 3 ∗ 3 3*3 33的矩阵和给的 K ( 3 ∗ 3 ) K(3*3) K(33),对应位置的元素相乘在求一个和,作为新的 A [ i ] [ j ] A[i][j] A[i][j]值,遍历A的每一个元素,如此操作。这样A矩阵就得到了一次更新,让求进行无数遍后的矩阵A。
  • 思路
    K’中肯定只有一个元素不为0,这样才能保证K中的元素的和为1.
    如果K中是1的元素不是A[1][1]的话,那么矩阵A最后就都是0,每一个操作都相当于将A中的元素往左或者往上或者左上方移动,无数次之后肯定都会被0填充了。
    如果K中是1的元素是A[1][1]的话,那么A就一直不变。
  • 另外,这个题数据出水了,太水了,尽管这样还是贴下代码吧
  • 代码
#pragma GCC optimize(2)
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long ul;
typedef unsigned long long ull;
#define pi acos(-1.0)
#define e exp(1.0)
#define pb push_back
#define mk make_pair
#define fir first
#define sec second
#define scf scanf
#define prf printf
typedef pair<ll,ll> pa;
const ll INF=0x3f3f3f3f3f3f3f3f;
const ll MAX_T=120;
const ll MAX_N=50;
ll A[MAX_N][MAX_N],K[4][4],T,N;
int main()
{
    
    
//  freopen(".../.txt","w",stdout);
//  freopen(".../.txt","r",stdin);
	ios::sync_with_stdio(false);
	cin>>T;
	while(T--){
    
    
		ll i,j,k;
		cin>>N;
		for(i=1;i<=N;i++){
    
    
			for(j=1;j<=N;j++)
			cin>>A[i][j];
		}
		ll sum=0,,posx=-1,posy=-1;
		for(i=1;i<=3;i++){
    
    
			for(j=1;j<=3;j++){
    
    
				cin>>K[i][j];
				if(K[i][j]){
    
    
					posx=i;
					posy=j;
				} 
			}
		}
		if(!(posx==1&&posy==1)){
    
    
			for(i=1;i<=N;i++){
    
    
				for(j=1;j<=N;j++){
    
    
					if(j==1)
					cout<<0;
					else
					cout<<' '<<0;
				}
				cout<<endl;
			}
		}
		else{
    
    
			for(i=1;i<=N;i++){
    
    
				for(j=1;j<=N;j++){
    
    
					ll X=i+posx-1;
					ll Y=j+posy-1;
					if(j!=1)
					cout<<' ';
					if(X>N||Y>N)
					cout<<0;
					else
					cout<<A[X][Y];
				}
				cout<<endl;
			}
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43311695/article/details/108702032