☀L1-049 Asignación de asientos para competencia de escalera (20 puntos) [simulación] [vector]

 

Hay una gran cantidad de jugadores que participan en la competencia de escalera cada año. Es necesario asegurarse de que todos los jugadores de la misma escuela no puedan estar adyacentes entre sí. La asignación de asientos se vuelve una tarea más problemática. Para ello, formulamos la siguiente estrategia: Supongamos que hay N escuelas que participan en un determinado campo de competencia, la i-ésima escuela tiene M [i] equipos y cada equipo tiene 10 jugadores. Haga que los jugadores de cada escuela se alineen en una columna, y los jugadores del i + 1 ° equipo se clasifican después de los jugadores del i-ésimo equipo. A partir de la primera escuela, el primer miembro del equipo de cada escuela toma sus asientos en orden, y luego el segundo miembro del equipo de cada escuela ... y así sucesivamente. Si solo queda una escuela y no se ha asignado un asiento al equipo, deben organizar a los miembros del equipo para que se sienten en asientos separados. Esta pregunta requiere que escriba un programa para generar automáticamente los números de asiento de los jugadores para cada escuela, comenzando desde 1.

Formato de entrada:

Ingrese el número de universidades participantes N (un número entero positivo que no exceda de 100) en una línea; la segunda línea da N números enteros positivos que no excedan de 10, donde el número i-ésimo corresponde al número de equipos participantes en la universidad i-ésima. Separado por espacios.

Formato de salida:

A partir del primer equipo de la primera universidad, los números de asientos de los jugadores se emiten secuencialmente. Cada equipo ocupa una línea y los números de los asientos están separados por 1 espacio y no debe haber espacios adicionales al principio y al final de la línea. Además, presione "#X" en la primera línea de cada universidad para generar el número X de la escuela, comenzando por 1.

Muestra de entrada:

3
3 4 2

Salida de muestra:

#1
1 4 7 10 13 16 19 22 25 28
31 34 37 40 43 46 49 52 55 58
61 63 65 67 69 71 73 75 77 79
#2
2 5 8 11 14 17 20 23 26 29
32 35 38 41 44 47 50 53 56 59
62 64 66 68 70 72 74 76 78 80
82 84 86 88 90 92 94 96 98 100
#3
3 6 9 12 15 18 21 24 27 30
33 36 39 42 45 48 51 54 57 60
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f;
priority_queue<int,vector<int>,greater<int>>q;
 
const int mod=10e9+7;

int M[110];
int M_large[110];
vector<int>a[110];
bool vis[110];

int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>M[i];
        M_large[i]=M[i]*10;
    }
    int no=0;
    int num=1;
    while(no<n)
    {
        for(int i=0;i<n;i++)
        {
            if(a[i].size()<M_large[i])
            {
                a[i].push_back(num);
                if(no==n-1)
                {
                    num+=2;
                }
                else
                    num++;
            }
            if(a[i].size()==M_large[i]&&!vis[i])
            {
                vis[i]=true;
                no++;
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        cout<<"#"<<i<<endl;
        for(int j=0;j<a[i-1].size();j++)
        {
            if((j+1)%10==0)
                cout<<a[i-1][j]<<endl;
            else
                cout<<a[i-1][j]<<" ";
        }
    }
    return 0;
}

Soy un cerdo. Pensé en vis [i] durante mucho tiempo. ¿Por qué debería agregarlo?

Referencia: https://blog.csdn.net/hy971216/article/details/80461526?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160456915319725266912653%2522%252C%2522scm%2522%251403A713.1% % 257D & request_id = 160456915319725266912653 & biz_id = 0 & utm_medium = distribuir.pc_search_result.none-task-blog-2 ~ all ~ first_rank_v2 ~ rank_v28-1-80461526.pc_first_rank_v2_rank_v28 & utm_10.349

Supongo que te gusta

Origin blog.csdn.net/qq_43660826/article/details/109519542
Recomendado
Clasificación