OpenJudge 16067 Film Festival (codicioso)

descripción

El Festival de Cine para Estudiantes Universitarios se lleva a cabo en la Universidad de Pekín. En este día, se proyectaron muchas películas en varios lugares de la Universidad de Pekín. Dado el intervalo de tiempo de cada película, es imposible ver películas con intervalos superpuestos (los puntos finales pueden superponerse) Pregúntele a Li Lei cuánto puede ver películas.

ingresar

Múltiples conjuntos de datos. El comienzo de cada grupo de datos es n (n <= 100), lo que significa un total de n películas.
Las siguientes n líneas, cada línea tiene dos números enteros (entre 0 y 1000), lo que indica que el intervalo de proyección de una película es
n = 0 y los datos terminan

Producción

Puede ver algunas películas como máximo para cada conjunto de salida de datos

Entrada de muestra

8
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
0

Salida de muestra

3

Ideas

Ordene la hora de finalización de la película de menor a mayor, y seleccione la hora de finalización más temprana y la hora de inicio mayor que la hora de inicio de la escena anterior cada vez. Obviamente, cuanto antes termine, más podrás ver más tarde.

#include<iostream>
#include<algorithm>
using namespace std;

struct move
{
    
    
	int s,e;
	friend bool operator<(const move a,const move b)
	{
    
    
		return a.e<b.e;
	}
}m[105];


int main()
{
    
    
	int n;
	while(1)
	{
    
    
		cin>>n;
		if(n==0)
			return 0;
		for(int i=1;i<=n;i++)
			cin>>m[i].s>>m[i].e;
		sort(m+1,m+n+1);
		int cnt=0,tmp=0;
		for(int i=1;i<=n;i++)
		{
    
    
			if(m[i].s>=tmp)
			{
    
    
				cnt++;
				tmp=m[i].e;
			}
		}
		cout<<cnt<<endl;
	}
}

Supongo que te gusta

Origin blog.csdn.net/m0_54621932/article/details/113920161
Recomendado
Clasificación