Competencia mensual del algoritmo SCC Enero de 2021 Grupo C

Dividir el equipo

Enumere todas las situaciones de agrupación, encuentre el valor mínimo de la diferencia entre el tiempo total de espera de los dos grupos antes y después de la batalla, use el prefijo y la matriz para optimizar el cálculo de la suma

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

const int N = 1e5+10;
int n, a[N], s[N], sum, minn = 1e9;;

int main(){
    
    
	cin >> n;
	for (int i = 1; i <= n; i ++) {
    
    
		cin >> a[i];
		s[i] = s[i-1] + a[i];
		sum += a[i];
	}
	
	for (int i = 1; i <= n-1; i ++) {
    
    
		minn = min(minn, abs(sum - s[i] - s[i]));
	}

	cout << minn;

    return 0;
}

Cantor

Gire el reloj Cantor 45 ° para obtener la siguiente figura piramidal, luego observe la figura y escriba el código
(1, 1) (2, 1) (1, 2) (3, 1) (2, 2) (1, 3) (4, 1) (3, 2) (2, 3) (1, 4) (5, 1) (4, 2) (3, 3) (2, 4) (1, 5) \ begin ( reunidos) (1,1) \\ (2,1) \ (1,2) \\ (3,1) \ (2,2) \ (1,3) \\ (4,1) \ (3, 2) \ (2,3) \ (1,4) \\ (5,1) \ (4,2) \ (3,3) \ (2,4) \ (1,5) \\ \ end ( reunido)( 1 ,1 )( 2 ,1 ) ( 1 , 2 )( 3 ,1 ) ( 2 , 2 ) ( 1 , 3 )( 4 ,1 ) ( 3 , 2 ) ( 2 , 3 ) ( 1 , 4 )( 5 ,1 ) ( 4 , 2 ) ( 3 , 3 ) ( 2 , 4 ) ( 1 , 5 )

#include <iostream>
using namespace std;

int main(){
    
    
	int a, b;
	
	cin >> a >> b;
	int t = a+b-2, sum = 0;
	for (int i = 1; i <= t; i ++) {
    
    
		sum += i;
	}
	
	if (t%2 == 0) sum = sum + b;
	else sum = sum + a;
	
	cout << sum ;

    return 0;
}

Buscar número de página

#include <iostream>
using namespace std;

int a, k, cnt;

int main(){
    
    
	cin >> a >> k;
	
	int i = 0;
	while (true) {
    
    
		i ++;
		int t = i;
		
		while (t) {
    
    
			if (t%10 == a) {
    
    
				cnt ++;
				if (cnt == k) {
    
    
					cout << i << endl;
					return 0;
				}
			}
			t /= 10;
		}		
	}

    return 0;
}

Juego triple

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

int n, x;
int a, b, c;

int main(){
    
    
	cin >> n;
	for (int i = 1; i <= n; i ++) {
    
    
		cin >> x;
		if (x%3==0) a++;
		if (x%3==1) b++;
		if (x%3==2) c++;
	}
	
	cout << min(b,c) + a/2;
	
    return 0;
}

Secuencia de reducción

#include <iostream>
#include <cstdio>
#include <map>
using namespace std;

const int N = 1e5+10;
int n, k, x, p[N], ans[N];

int main() {
    
    
	cin >> n >> k;
	for (int i =  1; i <= n; i ++) {
    
    
		cin >> x;
		p[x] = i;
	}

	for (int i = 1; i <= n; i ++) {
    
    
		int	t = p[i];
		for (int j = 1; j < k; j ++) {
    
    
			t = p[t];
		}
		ans[t] = i;
	}

	for (int i = 1; i <= n; i ++) {
    
    
		cout << ans[i] << ' ';
	}

	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/davidliule/article/details/113243216
Recomendado
Clasificación