2020 CCPC Network Trials 3x3 Convolution

  • Fragenbedeutung
    Diese Frage Ich denke, viele Leute stecken in der Fragebedeutung fest, Scheiße, viele Formeln. Geben Sie eine N * N-Matrix und 3 ∗ 3 3 * 3 an33 Matrix, zunächst auf die3 * 3 * 3 333 Die Matrix ist K '. Wenn Sie in K konvertieren möchten, müssen Sie nur die Summe der entsprechenden Elemente / Matrixelemente addieren. Definiere Matrix
    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 ] wird wie folgt berechnet: NimmA [i] [j] A [i] [j]A [ i ] [ j ] als3 ∗ 3 3 * 333 Erweitern Sie die obere linke Ecke der Matrix nach rechts unten auf3 ∗ 3 3 * 33Bei einer Matrix von 3 ist der Standardwert 0, wenn sie die Grenze überschreitet. Dann diese3 ∗ 3 3 * 33Die Matrix von 3 und das gegebeneK (3 ∗ 3) K (3 * 3)K ( 33 ) werden die Elemente an den entsprechenden Positionen multipliziert, um eine Summe als neuesA [i] [j] A [i] [j] zu finden.A [ i ] [ j ] -Wert, durchlaufen Sie jedes Element von A und tun Sie dies. Auf diese Weise wurde die A-Matrix einmal aktualisiert, so dass die Matrix A nach unzähligen Malen erhalten wird.
  • Das Denken, dass
    K 'sicherlich nur ein Element ist, ist nicht Null, um sicherzustellen, dass die Elemente von K und 1 sind.
    Wenn K kein Element A [1] [1] 1 von ist, dann ist schließlich die Matrix A 0, Jede Operation entspricht dem Verschieben des Elements in A nach links oder oben oder oben links und wird nach unzähligen Malen definitiv mit 0 gefüllt.
    Wenn das Element, das in K 1 ist, A [1] [1] ist, bleibt A unverändert.
  • Darüber hinaus sind die Daten dieser Frage nicht mehr im Wasser, zu wässrig, trotzdem den Code posten.
  • Code
#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;
}

Ich denke du magst

Origin blog.csdn.net/weixin_43311695/article/details/108702032
Empfohlen
Rangfolge