Educación Codeforces Ronda 97 (Clasificado para Div.2) ABCD

A. Esquema de marketing 

 

El significado de la pregunta: ¿Hay un número entero a que tenga i para todos los números i en [l, r]% a> = a / 2

Idea: Siempre que l% a> = a / 2 sea suficiente, la situación óptima es tomar a = r + 1, de modo que l% a pueda ser lo más grande posible

#include<bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 7;

int main() {
    int t, l, r;
    scanf("%d", &t);
    while(t--) {
        scanf("%d%d", &l, &r);
        if(l % (r + 1) >= (r + 2) / 2) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

B. Cadenas binarias inversas

 Pregunta: Proporcione una cadena 01, una operación puede revertir una cadena continua (izquierda y derecha), solicite al menos algunas operaciones para cambiar la cadena original en una cadena 01 alternativa (010101 …… o 101010 ……

Idea: La respuesta objetivo es una cadena de 01 alternantes. Ahora busque el número de 01 subcadenas alternas consecutivas de la cadena original. Se requiere una operación de inversión entre las dos subcadenas. Dado que los lados izquierdo y derecho son simétricos cuando se invierte, el izquierdo y los lados derechos son simétricos. Los diferentes intervalos de subcadenas en ambos lados se invierten juntos

#include<bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 1e5 + 7;

int main() {
    int t, n;
    scanf("%d", &t);
    string s;
    while(t--) {
        scanf("%d", &n);
        cin >> s;
        s[n] = s[0];
        int cnt = 0;
        for(int i = 1; i <= n; ++i)
            if(s[i] == s[i - 1]) cnt++;
        printf("%d\n", cnt / 2);
    }
    return 0;
}

C. Jefe Monocarp

 Título:

Ahora hay n platos en la olla, y se da el tiempo óptimo t [i] para cada plato. Si un plato está fuera de la olla desde el momento a, costará | a-t [i] |. Pregunte por n El mínimo costo de sacar todos los platos

Ideas:

Dado que t [i] <= n, se puede terminar en 2n minutos

dp [i] [j] Significa que el costo mínimo de tomar j platos después de que termine el minuto i, este estado se transferirá de dos estados: (1) tomar alimentos en el minuto i (2) no tomar alimentos en el minuto i- el minuto

dp [i] [j] = min (dp [i - 1] [j], dp [i - 1] [j - 1] + abs (i - t [j]))

#include<bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 506;

int t[N], dp[N][N];

int main() {
    int n, T;
    scanf("%d", &T);
    while(T--) {
        scanf("%d", &n);
        for(int i = 1; i <= n; ++i) scanf("%d", &t[i]);
        sort(t + 1, t + n + 1);
        memset(dp, inf, sizeof(dp));
        dp[0][0] = 0;
        for(int i = 1; i <= 2 * n; ++i) {   ///时间
            dp[i][0] = 0;
            for(int j = 1; j <= n; ++j) {   ///菜
                dp[i][j] = min({dp[i][j], dp[i - 1][j], dp[i - 1][j - 1] + abs(t[j] - i)});
            }
        }
        printf("%d\n", dp[2 * n][n]);
    }
    return 0;
}

D. Árbol de altura mínima

 

 Pregunta: Dado el orden bfs de un árbol, los nodos con el mismo nodo padre se organizan en orden ascendente en el orden bfs y preguntan la altura mínima del árbol.

Idea: Encuentre una subsecuencia ascendente continua, cada vez que se conecte una subsecuencia ascendente continua al punto más bajo actual, explicación de muestra:

5 1 2 5 4 3 La respuesta es 2, que se ve así:

#include<bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 2e5 + 7;

int a[N];

int main() {
    int t, n;
    scanf("%d", &t);
    while(t--) {
        scanf("%d", &n);
        int ans = 0, pre = 1, cnt = 0, now = 0;
        for(int i = 1; i <= n; ++i) {
            scanf("%d", &a[i]);
            if(i == 1) continue;
            if(a[i] > a[i - 1]) cnt++;
            else {
                now++;
                if(now == pre) {
                    ans++;
                    pre = cnt;
                    now = 0;
                }
            }
        }
        printf("%d\n", ans + 1);
    }
    return 0;
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43871207/article/details/109340406
Recomendado
Clasificación