Codeforces Ronda 887 (Div. 2) 题解||A+B

A. Desorting

Llamar a una matriz aaa de longitudnnn ordenada sia 1 ≤ a 2 ≤ … ≤ an − 1 ≤ an a_1 \leq a_2 \leq \ldots \leq a_{n-1} \leq a_na1a2an 1an.

Ntarsis tiene una matriz aaa de longitudnnnorte _

Se le permite realizar un tipo de operación en él (cero o más veces):

  • Elija un índice iiyo (1 ≤ yo ≤ norte - 1 1 \leq yo \leq n-11inorte1 ).
  • Añadir 1 11 a1 , a 2 , ... , ai a_1, a_2, \ldots, a_ia1,a2,,ayo.
  • restar 1 11 deai + 1 , ai + 2 , … , an a_{i+1}, a_{i+2}, \ldots, a_nayo + 1,ayo + 2,,an.

Los valores de aaa puede ser negativo después de una operación.

Determine las operaciones mínimas necesarias para hacer aaun no clasificado.
Aporte

Cada prueba contiene múltiples casos de prueba. La primera línea contiene el número de casos de prueba ttt (1 ≤ t ≤ 100 1 \le t \le 1001t100 ). A continuación se presenta la descripción de los casos de prueba.

La primera línea de cada caso de prueba contiene un solo número entero nnnorte (2 ≤ norte ≤ 500 2 \leq n \leq 5002norte500 ) — la longitud de la matrizaaun .

La siguiente línea contiene nnn enterosa 1 , a 2 , … , an a_1, a_2, \ldots, a_na1,a2,,an( 1 ≤ ai ≤ 1 0 9 1 \leq a_i \leq 10^91ayo1 09 ) — los valores de la matrizaaun .

Se garantiza que la suma de nnn en todos los casos de prueba no excede500 500500 .
Producción

Muestra el número mínimo de operaciones necesarias para que la matriz no esté ordenada . Entrada
de ejemplo

4
2
1 1
4 1
8 10 13 3 1 3 2 3 1 9 14



producción

1
2
0
3

Nota

En el primer caso, podemos realizar 1 11 operación para hacer que la matriz no esté ordenada:

  • Elija i = 1 i = 1i=1 . La matrizaaa entonces se convierte en[ 2 , 0 ] [2, 0][ 2 ,0 ] , que no está ordenado.

En el segundo caso, podemos realizar 2 22 operaciones para hacer que la matriz no esté ordenada:

  • Elija i = 3 i = 3i=3 . La matrizaaa entonces se convierte en[ 2 , 9 , 11 , 12 ] [2, 9, 11, 12][ 2 ,9 ,11 ,12 ] .
  • Elija i = 3 i = 3i=3 . La matrizaaa entonces se convierte en[ 3 , 10 , 12 , 11 ] [3, 10, 12, 11][ 3 ,10 ,12 ,11 ] , que no está ordenado.

Se puede probar que 1 11 y2 22 operaciones son el número mínimo de operaciones en el primer y segundo caso de prueba, respectivamente.

En el tercer caso, la matriz ya no está ordenada, por lo que realizamos 0 00 operaciones.

respuesta

1. El significado de la pregunta

En primer lugar, el significado general del título es darte una secuencia de enteros de longitud N. Utiliza una operación para ordenar toda la secuencia. La operación completa se puede resumir como seleccionar un subíndice i y sumar todos los valores. de los primeros elementos i. Los elementos después de 1 se restan todos por uno.

2. Ideas

Encuentre un intervalo entre dos puntos, de modo que se garantice que sus valores sean los más pequeños (simplificado), y opere sobre este valor.

3. Código

#include <iostream>
#include <cmath>
using namespace std ;
const int N = 510 ;
int q[N] ;
int ans ;
int main ()
{
    
    

	int t ;
	cin >> t ;
	while ( t -- )
	{
    
    
		ans = 1e9;//赋值方式: 1, 1en + m 
	int n ;
	cin >> n ;
	for(int i = 0 ; i < n ; i ++ )
	{
    
    
		cin >> q[i] ;
		if(i != 0 )
		{
    
    
			ans  = min(ans , q[i] - q[i - 1]);
		}
	}
	if(ans < 0 )
		cout << 0 << endl ; 
	else cout << ( ans / 2 )+ 1 << endl ; 
}	
	return 0 ; 
}

B. Fibonacarsis

Ntarsis ha recibido dos enteros nnn ykk para su cumpleaños. Se pregunta cuántas secuencias tipo Fibonacci de longitudkkk se puede formar con nnn como elkk -ésimo elementode la secuencia.

Una secuencia de enteros no negativos no decrecientes se considera similar a Fibonacci si fi = fi − 1 + fi − 2 f_i = f_{i-1} + f_{i-2}Fyo=Fyo 1+Fyo 2para todo i > 2 i > 2i>2 , dondefi f_iFyodenota el iii -ésimo elemento en la secuencia. Tenga en cuenta quef 1 f_1F1y f 2 f_2F2puede ser arbitrario.

Por ejemplo, secuencias como [ 4 , 5 , 9 , 14 ] [4,5,9,14][ 4 ,5 ,9 ,14 ] y[ 0 , 1 , 1 ] [0,1,1][ 0 ,1 ,1 ] se consideran secuencias similares a Fibonacci, mientras que[ 0 , 0 , 0 , 1 , 1 ] [0,0,0,1,1][ 0 ,0 ,0 ,1 ,1 ] ,[ 1 , 2 , 1 , 3 ] [1, 2, 1, 3][ 1 ,2 ,1 ,3 ] , y[ − 1 , − 1 , − 2 ] [-1,-1,-2][ - 1 ,- 1 ,2 ] no lo son: los dos primeros no siempre satisfacenfi = fi − 1 + fi − 2 f_i = f_{i-1} + f_{i-2}Fyo=Fyo 1+Fyo 2, este último no satisface que los elementos sean no negativos.

Impresiona a Ntarsis ayudándolo con esta tarea.

Aporte

La primera línea contiene un entero ttt (1 ≤ t ≤ 2 ⋅ 1 0 5 1 \leq t \leq 2 \cdot 10^51t21 05 ), el número de casos de prueba. La descripción de cada caso de prueba es la siguiente.

Cada caso de prueba contiene dos enteros, nnn ykk (1 ≤ norte ≤ 2 ⋅ 1 0 5 1 \leq norte \leq 2 \cdot 10^51norte21 05 ,3 ≤ k ≤ 1 0 9 3 \leq k \leq 10^93k1 09 ).

Se garantiza la suma de nnn sobre todos los casos de prueba no excede2 ⋅ 1 0 5 2 \cdot 10^521 05 .

Producción

Para cada caso de prueba, genera un número entero, el número de secuencias similares a Fibonacci de longitud kkk tal que elkk -ésimo elemento en la secuencia esnnnorte _ Es decir, generar el número de secuenciasfff de longitudkkk tanfff es una secuencia similar a Fibonacci yfk = n f_k = nFk=norte _ Se puede demostrar que este número es finito.

Entrada de ejemplo

8
22 4
3 9
55 11
42069 6
69420 4
69 1434
1 3
1 4

producción

4
0
1
1052
11571
0
1
0

Nota

Hay 4 44 secuencias de tipo Fibonacci válidas paran = 22 n = 22norte=22 ,k = 4 k = 4k=4 :

  • [ 6 , 8 , 14 , 22 ] [6,8,14,22][ 6 ,8 ,14 ,22 ] ,
  • [ 4 , 9 , 13 , 22 ] [4,9,13,22][ 4 ,9 ,13 ,22 ] ,
  • [ 2 , 10 , 12 , 22 ] [2,10,12,22][ 2 ,10 ,12 ,22 ] ,
  • [ 0 , 11 , 11 , 22 ] [0,11,11,22][ 0 ,11 ,11 ,22 ] .

Para n = 3 n = 3norte=3 ,k = 9 k = 9k=9 , se puede demostrar que no hay secuencias de tipo Fibonacci que satisfagan las condiciones dadas.

Para n = 55 n = 55norte=55 ,k = 11 k = 11k=11 ,[ 0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 ] [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55][ 0 ,1 ,1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,55 ] es la única secuencia similar a Fibonacci.

respuesta

1. Idea

El autor utilizó la búsqueda binaria en la solución de su propio problema, pero este problema también se puede pasar violentamente. La secuencia de Fibonacci, nos dio una n, que es el último elemento. En este momento, tenemos que pensar en la naturaleza de las matemáticas en al revés, después de todo Esta es una pregunta B que no puede ser demasiado difícil.

Debido a la naturaleza de S 1 + S 2 = S 3 de la sucesión de Fibonacci , de acuerdo con la idea de recursión, solo necesitamos determinar un elemento más para determinar la secuencia completa, es decir, una capa de recursividad, y usamos otra capa de k transversal Solo para verificar la corrección de la respuesta (simplificación matemática)
inserte la descripción de la imagen aquí

3. Código

#include <iostream>
using namespace std ;
bool cnt ;
int main () 
{
    
    
	int t ;
	cin >> t ;
	while (t --)
	{
    
    
		int n , k ;
		int ans = 0 ;

		cin >> n >> k ; 
		for(int i = n / 2 ; i <= n ; i ++)
		{
    
    	
			cnt = false ;
			int ans1 = n ;
			int ans2 = i ; 
			int kk = k - 2 ;
			for(int j = n - i ;   kk > 0; j = ans1 - ans2 ,kk -- )
			{
    
    
				ans1 = ans2 ;
				ans2 = j ;
				if(ans1 < ans2 || ans1 < 0 || ans2 < 0)
				{
    
    
					cnt = true;
					break;
				}
			}
			if(!cnt)
				ans ++ ;
		}
		cout << ans << endl ;
	}
	return 0 ;
}

Supongo que te gusta

Origin blog.csdn.net/wen030803/article/details/131889529
Recomendado
Clasificación