Solución de preguntas de preparación para la competencia de primer año csust2020

1.a + b

#include<iostream>
using namespace std;
int main(){
    
    
  	int t;cin>>t;
  	while(t--){
    
    
      int a,b;
      cin>>a>>b;
      cout<<a+b<<endl;
    }
  	return 0;
}

2.Psycho-Pass

#include <bits/stdc++.h>
using namespace std;

const int mac=1e5+10;

char s[mac];

int main()
{
    
    
    int nb=0;
    scanf ("%s",s);
    int len=strlen(s);
    for (int i=0; i<len; i++)
        if (s[i]=='1') nb++;
    printf ("%d\n",nb);
    return 0;
}

3. Correspondencia entre corchetes
Esta es una comprensión simple de la pila. Utilice la suma para registrar una pieza de datos. Cuando encuentre '(', aumentar en uno, encontrar ')', luego disminuya en uno. En el proceso de escaneo de frente a atrás, la suma es siempre No es un número negativo, y la suma es igual a 0 después de que se completa el escaneo y se emite SÍ.

#include <bits/stdc++.h>
using namespace std;

const int mac=1e5+10;

char s[mac];

int main()
{
    
    
    int n;
    scanf ("%d",&n);
    scanf ("%s",s+1);
    int sum=0;
    for (int i=1; i<=n; i++){
    
    
        if (s[i]=='(') sum++;
        else sum--;
        if (sum<0) {
    
    
            printf ("NO\n");
            return 0;
        }
    }
    if (sum>0) printf ("NO\n");
    else printf ("YES\n");
    return 0;
}

4. A JCC le encanta jugar al fútbol.
Dado que cada ronda es un número par de equipos, esto equivale a un árbol binario completo. Cuando vemos televisión con frecuencia, todos los partidos aparecen básicamente como un diagrama de árbol.

Solo registramos el número del nodo hoja cada vez (asumiendo que es i), entonces el siguiente número de nodo hoja nuevo (es decir, el padre del nodo hoja antiguo) es (i + 1) / 2 como se muestra en la figura :

Inserte la descripción de la imagen aquí

Luego se encuentran cuando el nodo principal es el mismo, y cada vez que se encuentra el nodo principal, el contador se incrementa en uno, el valor del contador final (denotado como S) es la profundidad del árbol -1, que también es el número de juegos, y finalmente si 2S es el total El número de equipos indica que se enfrentan en la final.

#include <bits/stdc++.h>
using namespace std;

int pow(int a,int s)
{
    
    
    int ans=1;
    for (int i=1; i<=s; i++)
        ans*=a;
    return ans;
}

int main()
{
    
    
    int n,a,b;
    scanf ("%d%d%d",&n,&a,&b);
    int s=0;
    while (a!=b){
    
    
        a=(a+1)/2;
        b=(b+1)/2;
        s++;
    }
    if (n-pow(2,s)==0) printf ("Final!\n");
    else printf ("%d\n",s);
    return 0;
}

5. Para las comidas en la cantina,
use dos punteros dobles para mantener la suma del intervalo.

#include <bits/stdc++.h>
#define pb push_back
#define m_p make_pair
#define pii pair<int, int>
#define fi first
#define se second
typedef long long ll;
using namespace std;
int n,m;
const int maxn = 2e5+100;
int a[maxn];
int main()
{
    
    
    int t;
    scanf("%d",&t);
    while(t--)
    {
    
    
        scanf("%d%d",&n,&m);
        int tmp = 0,res = 0;
        for(int i = 1;i<=n;i++)
        {
    
    
            scanf("%d",a+i);
            if(i<=m) tmp+=a[i];
        }
        res = tmp;
        for(int i = m+1;i<=n;i++)
        {
    
    
            tmp+=a[i];
            tmp-=a[i-m];
            res = max(tmp,res);
        }
        printf("%d\n",res);

    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45755679/article/details/111356970
Recomendado
Clasificación