enlaces a los temas: https://codeforces.com/contest/1332
A. Caminar Ejercicio
Repetidamente mover las dos direcciones compensados por el número de pasos, el número de pasos y ver si hay más de o igual a una dirección de longitud del número restante de pasos.
#include <bits / STDC ++ H.> el uso de espacio de nombres STD; void Resolver () { int A, B, C, D; CIN >> >> B >> A >> C D; int X, Y, X1, X2, Y1, Y2; CIN >> >> X Y Y1 >> >> >> X1 >> X2 Y2; int L1 = max (X-X1, X2-X), L2 = max (Y2-Y, Y Y1) ; IF (L1> 0 ) { // si la izquierda o derecha de distancia int mi el = min (A, B); // moverse compensación A- = mi el, B- = mi el; IF (A> 0 && A <= X-X1) A = 0 ; SI (B>0&& b <= x2-x) b = 0 ; } Si (L2> 0 ) { int mi = min (c, d); c - = mi, d- = mi; si (c> 0 && c <= y-y1) c = 0 ; si (d> 0 && d <= y2-y) d = 0 ; } Si (a || b || c || d) cout << " No \ n " ; otro tribunal << " Sí \ n " ; } Int main () { int t; cin >> t; ) Resolver (); volver 0 ; }
B. Compuesto para colorear
Sólo menos de 1.000 factor primordial cuadrado 11, el mismo color de tinte a un factor primordial mínimo.
#include <bits / STDC ++ h.> usando espacio de nombres std; anulará solve () { int n; cin >> n; int res [n] = {}; int color = 0 ; mapa < int , int > m; para ( int i = 0 ; i <n; i ++ ) { int t; cin >> t; para ( int j = 2 ; j <= t; j ++ ) { si (t% j == 0 ) { si(m [J]) RES [I] = m [J]; // si esto ocurre antes de que el factor de calidad, el número del mismo color para teñir los demás RES [I] = m [J] Color = ++; // de otro modo, un nuevo color asignado al factor de calidad PAUSA ; } } } COUT << de color << " \ n- " ; para ( int I = 0 ; I <n-; I ++) I COUT << << " \ n- " [I N- == 1. ]; } int main () { int T; CIN >> T; el tiempo (T- ) Resolver (); retorno 0 ; }
C. K-Complete Palabra
Cada teniendo ambos extremos del carácter y extremos interiores de los personajes de la época, que han de ser los mismos, que reemplazan la mayoría de que en él.
#include <bits / STDC ++ h.> usando espacio de nombres std; vacío solve () { int n, k; n cin >> >> k; string s; cin >> S; int ans = 0 ; bool vis [n] = {}; para ( int i = 0 ; i <n; i ++ ) { si (vis [i]) siguen ; vector < Char > v; para ( int j = i; j <n; j + = k) si (! vis [j]) { v.push_back (s [j]); vis [j] = verdadero ; } Para ( int j = ni- 1 ; j> = 0 ; j- = k) si (! Vis [j]) { v.push_back (s [j]); vis [j] = verdadero ; } Int cnt [ 26 ] = {}; para ( Char c: v) cnt [c- ' un ' ] ++ ; int mx = * max_element (cnt, cnt + 26 ); ans + = int (v.size ()) - mx; } Cout << ans << " \ n " ; } Int main () { int t; cin >> t; mientras que (t-- ) resolver (); volver 0 ; }
D. Caminar sobre Matrix
El código dp original a causa de la búsqueda de valor máximo actual y descarte valor inferior harán una respuesta mayor, puede construir las mismas ideas.
#include <bits / STDC ++ h.> usando espacio de nombres std; const int inf = 1 << 17 ; int main () { int k; cin >> k; cout << " 2 3 \ n " ; cout << (inf + k) << ' ' << k << ' ' << inf << " \ n " ; cout << inf << ' ' << (inf + k) << ' ' << k; volver 0 ; }