1065 puntuación de un solo perro 25

"Perro soltero" es un nombre de mascota en chino para personas solteras. En esta pregunta, se le pide que averigüe el único invitado de una gran fiesta con decenas de miles de personas, para brindarle un cuidado especial.

Formato de entrada:

Ingrese la primera línea para dar un número entero positivo N (≤ 50 000), que es el logaritmo de parejas/parejas conocidas; luego N líneas, cada línea da un par de parejas/parejas—por conveniencia, cada persona corresponde a una ID La número es de 5 dígitos (de 00000 a 99999), y las identificaciones están separadas por espacios; luego se da un número entero positivo M (≤ 10 000), que es el número total de personas que participan en la fiesta; la siguiente línea da las identificaciones de los invitados M, separados por espacios. El problema es asegurarse de que nadie sea bígamo o pise dos barcos.

Formato de salida:

Primero, la primera línea genera el número total de invitados individuales; luego, la segunda línea enumera el orden de los invitados en orden ascendente de ID. Los ID están separados por 1 espacio y no debe haber espacio adicional al principio y al final de la línea.

Muestra de entrada:

3
11111 22222
33333 44444
55555 66666
7
55555 44444 10000 88888 22222 11111 23333

Salida de muestra:

5
10000 23333 44444 55555 88888

Esta pregunta es fácil de escribir, pero es fácil de tiempo de espera. Para optimizar la eficiencia del tiempo, al leer los participantes de la fiesta por primera vez, puede agregar los que no son solteros al diccionario y agregar los participantes de la fiesta a un vector y luego atravesar los datos en el vector, lo que puede reducir el número. de bucles

Reemplazar el tipo de cadena con int y cin con scanf e printf para entrada y salida puede optimizar en gran medida la eficiencia del tiempo.

#include<bits/stdc++.h>
using namespace std;
map<int,int>mp;
vector<int>v,ans;
int main()
{
	int n,m;
	cin>>n;
	for(int i = 0;i<n;i++){
		int s1,s2;
		cin>>s1>>s2;
		mp[s1] = s2;
		mp[s2] = s1;
	}
	cin>>m;
	while(m--){
		int num;
		scanf("%d",&num);
		v.push_back(num);
	}
	for(int i = 0;i<v.size();i++){
		if(find(v.begin(),v.end(),mp[v[i]]) == v.end())
			ans.push_back(v[i]);
	}
	sort(ans.begin(),ans.end());
	cout<<ans.size()<<"\n";
	for(int i = 0;i<ans.size();i++){
		printf("%05d",ans[i]);
		if(i!=ans.size()-1) cout<<" ";
		else cout<<"\n";
	}
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_53514496/article/details/125868162
Recomendado
Clasificación