Pollo A. Alimentación

título

Significado de las preguntas:

    Dada una matriz de n * m, los metros de la matriz en algunos lugares. Un total de k le pollitos, y ahora es necesario asignar sus lugares. La solicitud no puede ser asignado a dos polluelos con una rejilla, cada rejilla se debe asignar y asignado a una posición Unicom pájaro, de tal manera que la diferencia entre m y más comen arroz menos reduce al mínimo.

análisis:

    Para minimizar esta diferencia, es evidente que los metros promedio de puntuación, también se distribuyen uniformemente resto, hasta el 1 de diferencia. Debido a la Unicom, el tiempo asignado a serpentina poligonal, las filas impares de secuencia positiva, revertir filas pares. El resto es para simular el proceso muy bien.
 
 

#include <iostream>
using namespace std;

char a[105][105];
char res[105][105];

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int t;
	cin >> t;
	while( t-- )
	{
		int n,m,k;
		cin >> n >> m >> k;
		int num = 0;
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= m; j++)
			{
				cin >> a[i][j];
				if( a[i][j] == 'R' ) num ++;
			}
		}
		int z1 = num / k;
		int z2 = num % k;
		int index = 1;
		int temp;
		if( z2 != 0 ) temp = z1 + 1;
		else temp = z1; 
		char ans = 'a';
		for (int i = 1; i <= n; i++)
		{
			if( i & 1 )
			{
				for (int j = 1; j <= m; j++)
				{
					if( a[i][j] == 'R' && temp == 0 )
					{
						index ++;
						if( index > z2 ) temp = z1;
						else temp = z1 + 1;
						if( ans == 'z' ) ans = 'A';
						else if( ans == 'Z' ) ans = '0';
						else ans ++;
					}
					res[i][j] = ans;
					if( a[i][j] == 'R' ) temp --;
				}
			}else
			{
				for (int j = m; j >= 1; j--)
				{
					if( a[i][j] == 'R' && temp == 0 )
					{
						index ++;
						if( index > z2 ) temp = z1;
						else temp = z1 + 1;
						if( ans == 'z' ) ans = 'A';
						else if( ans == 'Z' ) ans = '0';
						else ans ++;
					}
					res[i][j] = ans;
					if( a[i][j] == 'R' ) temp --;
				}
			}
		}
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= m; j++)
			{
				cout << res[i][j];
			}
			cout << '\n';
		}
	} 
	return 0;
}

Publicados 132 artículos originales · ganado elogios 6 · vistas 7930

Supongo que te gusta

Origin blog.csdn.net/weixin_44316314/article/details/104835819
Recomendado
Clasificación