[Problema de programación] fluctuación de extracción de características Byte Golang

[Programación problema] Extracción de Características

Xiao Ming es un ingeniero algoritmo, sino también un oficial de heces pala. Un día, capricho, quería aprovechar parte de la información de movimiento en el vídeo gatito gato. Con el fin de extraer la información de movimiento que necesitaba "gatos característica" se extrajeron de cada fotograma del vídeo. Cat es una característica de un vector de dos dimensiones <x, y>. Si x_1 x_2 = y = y1 y_2, tal vez es la misma característica.
Por lo tanto, si una característica constante de Kitten, Kitten se puede considerar en movimiento. Es decir, si la característica <a, b> aparece en el marco de duración, que constituirá un movimiento de características. Por ejemplo, en la que <a, b> 2/3/4/7/8 aparece marco primero, luego los rasgos característicos que forman los dos movimiento 2-3-4 y 7-8.
Ahora, dadas las características de cada trama, el número de características puede ser diferente. Xiao Ming espera encontrar el movimiento característica más larga.

Introduzca una descripción:

La primera línea contiene un número entero positivo n, se representan el número de casos de prueba.
La primera línea de cada caso de prueba contiene un número entero positivo M, los fotogramas de vídeo representativas.
Los próximos M filas, cada fila representa una. En donde el primer número es el número de las características de la trama, el siguiente número es el valor de la característica; tales como entrada de la muestra en la tercera fila, representa el marco tiene dos características gato, <1,1> y <2,2>
todo con el número total de características de entrada y realizaciones <100 000
N satisfacer 1≤N≤100000, número M que satisface las características 1≤M≤10000, satisfaciendo a ≤ 10.000.
Los valores característicos son enteros no negativos.

Descripción Salida:

Una longitud de cada caso de prueba, la característica de salida del movimiento como una fila

Ejemplo 1

Input
. 1
. 8
2 2 2. 1. 1
2. 1. 1. 1. 4
2. 1. 1 2 2
2 2 2. 1. 4
0
0
. 1. 1. 1
. 1. 1. 1
de salida
3
se describe
en el que <1,1> 3 veces consecutivas en tramas sucesivas, otras características en comparación con el número de consecutivo grande, la salida 3

observaciones:

Si no hay movimiento característico mayor longitud que 2, el proceso vuelve 1

pensamiento

Recientemente escribir Golang, pero al ver esta pregunta pensó inmediatamente en el par C ++ y mapa. La idea es muy simple, es utilizar el número de mapa de registros, pero la mayoría comenzó a escribir la versión particular de largo aliento, mientras los ojos de otras personas un código C ++ realidad equivocadas para Python, como si estuviera leyendo la experiencia estreñimiento dos semanas una vez la comodidad suave. No, tengo que volver a escribir una versión concisa.
Además, el objeto de la observación, dijo que más de 2, de hecho, debe ser mayor que o igual a 2. Ejemplo del uso tiene una longitud de 2, la salida es 2.

Si no hay movimiento característico mayor longitud que 2, el proceso vuelve 1

mi respuesta

#include <iostream>
#include <map>
#include <vector>

using namespace std;

int main()
{
    int m, n, k;
    cin >> n >> m;
    pair <int, int> p;  //记录特征
    while (n--) {       //n个用例           //k个特征
        int maxCnt = 2;
        map<pair<int, int>, int> lastFrame;    //上一帧计数
        map<pair<int, int>, int> currentFrame; //当前帧计数
        while (m--) {   //m帧视频
            cin >> k;        
            while (k--) {
                cin >> p.first >> p.second;
                if (lastFrame.count(p)) {
                    currentFrame[p] = lastFrame[p] + 1;
                    maxCnt = currentFrame[p] > maxCnt ? currentFrame[p] : maxCnt;
                }else currentFrame[p] = 1;
            }
            lastFrame.clear();
            swap(lastFrame, currentFrame);
        }
        cout << maxCnt << endl;
    }
}
Publicado 38 artículos originales · ganado elogios 0 · Vistas 1026

Supongo que te gusta

Origin blog.csdn.net/Cyan1956/article/details/104910671
Recomendado
Clasificación