Optimización del rendimiento de front-end-6 solución de optimización integral de gran ángulo

descargar: Optimización del rendimiento de front-end-6 solución de optimización integral de gran angular

A menudo decimos que el rendimiento es siempre el primer requisito. Como ingeniero de front-end, no importa qué marco use, no importa en qué tipo de desarrollo de sitio web o aplicación esté involucrado, siempre que los usuarios usen el proyecto, el rendimiento La optimización siempre será un problema al que debe prestar atención. En circunstancias normales, los ingenieros pueden resumir el plan de optimización del rendimiento después de comprender profundamente los principios de la tecnología front-end, que requiere años de experiencia. La tecnología front-end está cambiando con cada día que pasa, y en los últimos años también han surgido excelentes soluciones de optimización del rendimiento en un flujo interminable. En este curso, lo llevaré a utilizar las soluciones más avanzadas y profesionales de la industria actual para resolver el problema de la optimización del rendimiento del front-end. Ya sea para resolver problemas prácticos en el trabajo o para mejorar su capacidad, este curso puede ayudarlo.

Adecuado para la multitud
, desarrolladores front-end con 1-3 años de experiencia en desarrollo
, graduados que acaban de ingresar a la sociedad.

La reserva técnica requiere conocimientos básicos de
HTML / CSS / JS
de Webpack, React, Node.js
IL void access (int x) {// Abre la ruta desde el nodo raíz ax, x es el más profundo
para (R y = 0; x; x = fa (y = x)) {
splay (x), rs (x) = y, pushup (x);
}
}
Make_root (x): convierte x en el nodo raíz

IL void makeroot (int x) {// Cambia x a la raíz del árbol original
access (x), splay (x), Rev (x);
}
Find_root (x): encuentra el nodo raíz donde x es

IL int findroot (int x) {// Encuentra la raíz del árbol original de
x access (x), splay (x);
while (ls (x)) pushdown (x), x = ls (x);
return x ;
}
Derramado (x, y): convierte la ruta de xay en una ruta de borde real

IL void split (int x, int y) {// y Mantiene la información en la ruta xy
makeroot (x), access (y), splay (y);
}
Link (x, y): Si x, y no están conectados , Luego une el lado (x, y)

IL void link (int x, int y) {
makeroot (x); if (findroot (y)! = X) fa (x) = y;
}
Cut (x, y): Si hay un borde entre xey , Eliminar el borde

IL void cut (int x, int y) {
split (x, y);
if (fa (x) == y && rs (x) == 0) fa (x) = ls (y) = 0, pushup (y) ;
}
Isroot (x): determina si x es el nodo raíz de la extensión

IL int nroot (int x) // devuelve 1 para aclarar que x no es la raíz, devuelve 0 para aclarar que x es la raíz
{return ls (fa (x)) == x || rs (fa (x)) == x;}
P3690 【Plantilla] Árbol de corte de enlace (árbol dinámico)
Adorable nuevo código ~ Código de viento aprendido del equipo de Yu

! [] ()! [] () `` `
1 #include <bits / stdc ++. H>
2 #define IL inline
3 #define R register int
4 #define ls (x) a [x] .ch [0]
5 #define rs (x) a [x] .ch [1]
6 #define fa (x) a [x] .fa
7
8 usando el espacio de nombres std;
9 const int N = 1e5 + 5, inf = 0x3f3f3f3f;
10
11 IL int read () {
12 int f = 1;
13 char ch;
14 while ((ch = getchar ()) <'0' || ch> '9') if (ch == '-') f = -1;
15 int res = ch-'0 ';
16 while ((ch = getchar ())> = '0' && ch <= '9') res = res10 + ch-'0 ';
17 return resf;
18}
19
20 int n, m;
21 struct hh {
22 int ch [2], fa, val, rev, sum;
23} a [N];


26 IL void Rev (int x) {swap (ls (x), rs (x)); a [x] .rev ^ = 1;}
27 IL void pushup (int x) {a [x] .sum = a [ls (x)]. sum ^ a [rs (x)]. sum ^ a [x] .val;}
28 IL int nroot (int x) // 返回 1 阐明 x 不是 根 , 返回 0 阐明 x 是 根
29 {return ls (fa (x)) == x || rs (fa (x)) == x;}
30
31 IL void pushdown (int x) {
32 if (a [x] .rev) {
33 a [x] .rev = 0;
34 si (ls (x)) Rev (ls (x));
35 si (rs (x)) Rev (rs (x));
36}
37}
38
39 IL void pushall (int x) {
40 if (nroot (x)) pushall (fa (x));
41 empujar (x);
42}
43
44 IL vacío rotar (int x) {
45 int y = fa (x), z = fa (y), k = chk (x), w = a [x] .ch [k ^ 1];
46 si (nroot (y)) a [z] .ch [chk (y)] = x; fa (x) = z;
47 si (w) fa (w) = y; a [y] .ch [k] = w;
48 fa (y) = x; a [x] .ch [k ^ 1] = y;
49 flexiones (y); flexiones (x);
50}
51
52 IL void splay (int x) {// girar x Para la raíz de splay
53 pushall (x);
54 while (nroot (x)) {
55 int y = fa (x);
56 if (nroot (y)) rotate (chk (x) ^ chk (y)? x: y);
57 rotate (x);
58}
59}
60
61 IL void access (int x) {// Abre la ruta desde el nodo raíz ax, x es el
62 más profundo para (R y = 0; x; x = fa (y = x)) {
63 splay (x), rs (x) = y, pushup (x);
64}
65}
66
67 IL void makeroot (int x) {// cambia x a la raíz de el árbol original
68 access (x), splay (x), Rev (x);
69}
70
71 IL int findroot (int x) {// Encuentra la raíz del árbol original de
x 72 access (x), splay ( x);
73 while (ls (x)) pushdown (x), x = ls (x);
74 return x;
75}
76
77 IL void split (int x, int y) {// y 維護 xy 途径 上 的 信息
78 makeroot (x), access (y), splay (y);
79}
80
81 IL void link (int x, int y) {
82 makeroot (x); if (findroot (y)! = X) fa (x) = y;
83}
84
85 IL corte vacío (int x, int y) {
86 split (x, y);
87 if (fa (x) == y && rs (x) == 0) fa (x) = ls (y) = 0, pushup (y);
88}
89
90 int main () {
91 n = leer ();
92 m = leer ();
93 para (R i = 1; i <= n; ++ i) a [i] .val = a [i] .sum = read ();
94 while (m--) {
95 int op = leer (), x = leer (), y = leer ();
96 if (! Op) split (x, y), printf ("% d \ n", a [y] .sum);
97 else if (op == 1) enlace (x, y);
98 else if (op == 2) cut (x, y);
99 else makeroot (x), a [x] .val = y, pushup (x);
100}
101 return 0;
102}

Supongo que te gusta

Origin blog.51cto.com/15134646/2665115
Recomendado
Clasificación