2020 CCPC Network Trials 3x3 Свертка

  • Значение
    вопроса. Я думаю, многие люди зацикливаются на значении вопроса, черт возьми, много формул. Дайте матрицу N * N и 3 ∗ 3 3 * 33*3 матрица, изначально до3 * 3 * 3 33*3 Матрица - это K ', если вы хотите преобразовать в K, вам нужно только добавить сумму соответствующих элементов / элементов матрицы. Определим матрицу
    C (A, K) = C (C [A] [K], K) C (A, K) = C (C [A] [K], K).С ( А ,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 * 33*3 Левый верхний угол матрицы разверните в правый нижний до3 * 3 3 * 33*Матрица из 3 , если она выходит за границу, по умолчанию 0. Тогда это3 ∗ 3 3 * 33*Матрица 3 и заданноеK (3 ∗ 3) K (3 * 3)К ( 3*3 ) элементы в соответствующих позициях перемножаются, чтобы найти сумму в виде новогоA [i] [j] A [i] [j]Значение [ i ] [ j ] , пройти каждый элемент A и сделать это. Таким образом, матрица A была обновлена ​​один раз, так что матрица A была получена спустя бесчисленное количество раз.
  • Думая, что
    K 'определенно только один элемент не равен нулю, чтобы гарантировать, что элементы K и равны 1.
    Если K не является элементом A [1] [1] 1 из, то, наконец, матрица A равна 0, Каждая операция эквивалентна перемещению элемента в A влево, вверх или в левый верхний угол, и он определенно будет заполнен 0 через бесчисленное количество раз.
    Если элемент, равный 1 в K, является 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