CF Ronda # 632 div2 solución a un problema

\ (Codeforces \) \ (Ronda \) \ (632 \)

A. Poco Artem

\(Descripción:\)

\ (N- \) OK \ (m \) columna de la tabla, cada rejilla puede ser de color negro o blanco
en mente \ (W es \) hay cuadrados blancos y negros de celosía número rodeando
denomina \ (B \) no es tan cuadrados blancos alrededor número rejilla negro
en la reivindicación construye un protocolo de tinción, de tal manera que \ (B = W + 1 \ )

\(Solución:\)

Olimpiada Escolar Primario título
directamente a la primera fila, primera columna teñido de blanco, otros se tiñen negro
en este momento \ (W = 1 \) , \ (B = 2 \)
es claramente el programa para formar todos los tamaños se establecen

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,t;
int main(){
	int i,j;
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&m);
		printf("W");
		for(i=2;i<=m;i++)printf("B");
		printf("\n");
		for(i=2;i<=n;i++){
			for(j=1;j<=m;j++)
				printf("B");
			printf("\n");
		}
	}
	return 0;
}

B. Tipo Anton

\(Descripción:\)

Dada una longitud \ (n- \) matriz \ (a_n \) \ ((a_i \ in \ lbrace-1,0,1 \ rbrace) \)
cada operación puede ser \ (A \) de cualquiera de las elemento \ (a_i \) acumulado en su hacia atrás \ (A_j \) un \ ((i <j) \
) tras cualquier operación a través de Q, puede \ (a \) en una matriz de \ (B \)

\(Solución:\)

Debido a \ (A \) únicos elementos \ (0, -1 \) son tres valores, difíciles de encontrar los siguientes puntos:
1. Si un número precedido por \ (1 \) , entonces puede convertirse en cualquier una más grande que su número entero
2. Si hay un número delante de \ (--1 \) , entonces puede convertirse en cualquier número entero más pequeño que su
continuación, sólo tenemos que comparar \ (a_i \) y \ (b_i \) de el tamaño de la relación, y luego miran las estadísticas \ (1 \) y \ (- 1 \) aparece la situación puede ser.

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,t,a[100005],b[100005];
int main(){
	int i,j;
	scanf("%d",&t);
	while(t--){
		int f1=0,f2=0;
		scanf("%d",&n);
		for(i=1;i<=n;i++)scanf("%d",&a[i]);
		for(i=1;i<=n;i++)scanf("%d",&b[i]);
		int flag=1;
		for(i=1;i<=n;i++){
			if(f1&&f2)break;
			if(b[i]>a[i]&&f1==0){flag=0;break;}
			if(b[i]<a[i]&&f2==0){flag=0;break;}
			if(a[i]==1)f1=1;
			if(a[i]==-1)f2=1;
		}
		if(flag)printf("YES\n");
		else printf("NO\n");
	}
	return 0;
}

C. Eugene y una matriz

\(Descripción:\)

Dada una longitud \ (n- \) de la matriz, en el que la lista de peticiones de todos los sub-sub-columnas y el número no es cero

\(Solución:\)

Considere dos secuencias de puntos finales \ (L \) y \ (& lt \ R) , la Orden siguiente \ ((l, r) \ ) representa el punto de izquierda \ (L \) , el punto extremo derecho \ (& lt \ R) sub la columna, es fácil llegar a las siguientes conclusiones:
1. Si la sub-columna actual no es legítimo, a continuación, contiene toda la columna sub-sub-columna de la corriente no es legítimo
2. Si la sub-columna actual legítima, entonces es que todas las columnas niño son legítimas
3. Si \ (( l, r + 1) \) método, que se compara entonces con la \ ((l, r) \ ) se incrementa como el número de niño legal \ (r-l + 1 \
) obteniendo de este modo el siguiente algoritmo:
1. pretratamiento fuera prefijo y luego tipo, entonces número para facilitar estadísticas
2. para la corriente izquierdo y extremo derecho \ (l \) y \ (r \) , como se \ (r \) a la derecha, hasta que la corriente sub-columnas no son legítimos , actualizar cada respuesta correcta
3. la \ (L \) a la derecha, hasta que la corriente legal sub-array
4. repetición \ (2 \) , \ (3 \)Paso hacia abajo a través de la completa gama
5. respuesta de salida

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>//kai long long
using namespace std;
typedef long long lol;
int n,a[200005],cnt[200005];
lol ans;
struct node{
	lol sum;
	int x,k;
}b[200005];
bool cmp1(const node a,const node b){return a.sum<b.sum;}
bool cmp2(const node a,const node b){return a.x<b.x;}
int main(){
	int i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(i=1;i<=n;i++){
		b[i].sum=b[i-1].sum+a[i];
		b[i].x=i;
	}
	sort(b,b+n+1,cmp1);
	for(i=0,j=0;i<=n;i++)
		if(i==0||b[i].sum!=b[i-1].sum)b[i].k=++j;
		else b[i].k=j;
	sort(b,b+n+1,cmp2);
	cnt[b[0].k]++;
	i=1;j=0;
	while(1){
		while(cnt[b[j+1].k]==0){
			j++;
			cnt[b[j].k]++;
			ans+=j-i+1;
			if(j>=n)break;
		}
		if(j>=n)break;
		while(cnt[b[j+1].k]){
			cnt[b[i-1].k]--;
			i++;
		}
	}
	printf("%lld\n",ans);
	return 0;
}

D. Desafíos en la escuela №41

\(Descripción:\)

Algunos niños no escuchan a ver el caos sobre
el número de niños que recibieron \ (n \) , y les da para ver la dirección de \ ((L \) \ (o \) \ (R ^) \)
cada operación puede seleccionar uno o varios de los niños que son actualmente mostrar adyacente cariñoso, y revertir ellos
le preguntó si podía pasar por \ (k \) las operaciones de modo que ya no es un niño con afecto en el televisor

\(Solución:\)

Establecer la dirección de cada uno de los dos hijos se convirtieron en un ajuste, y todos los hijos de revertir el estado actual de una operación
no es difícil de encontrar, el número de ajustes están determinados, el orden no cambia con los cambios
a \ (n- \) a un niño, no exceda de la operación discutida \ (n-1 \)
y luego contar el número de veces que un ajuste \ (SUMA \) , requiere de varias rondas de operación \ (máx \) , y registrar cada ajuste posición
si \ (suma \ geq k \) y \ (K \ GEQ max \) , entonces la salida resolubilidad necesidad de un conjunto de soluciones a
otros casos no hay solución

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,ans[3005][3005],cnt[3005],sum,mmax;
char s[3005];
int main(){
	int i,j,k,len,o;
	scanf("%d%d",&n,&m);
	scanf("%s",s+1);
	len=strlen(s+1);
	for(i=1;i<n;i++){
		j=1;
		while(j<=n){
			if(s[j]=='R'&&s[j+1]=='L'){
				swap(s[j],s[j+1]);
				ans[i][++cnt[i]]=j;
				j+=2;
			}
			else j++;
		}
		sum+=cnt[i];
		if(cnt[i])mmax=i;
	}
	if(sum<m||m<mmax){
		printf("-1\n");
		return 0;
	}
	else{
		int need=sum-m;
		j=1;k=1;
		for(i=1;i<=m;i++){
			if(need==0){
				printf("%d %d\n",1,ans[j][k]);
				k++;
				if(k>cnt[j]){j++;k=1;}
			}
			else{
				int s=min(need,cnt[j]-k);
				need-=s;
				printf("%d ",s+1);
				for(k,o=k+s;k<=o;k++)printf("%d ",ans[j][k]);
				printf("\n");
				if(k>cnt[j]){j++;k=1;}
			}
		}
	}
	return 0;
}

E. Road 1600

\(Descripción:\)

Construir una \ (n * n \) junta que leer digitales \ (1 \) ~ \ (n * n \) , entonces no es un "vehículo" a "post", las piezas se están moviendo a seguir las siguientes reglas:
1 . Si \ (1 \) etapa de mover arriba en la parrilla no ha atravesado, la cuadrícula no seleccionados atravesada digital móvil de celosía más pequeño.
2. Si \ (1 \) etapa de mover arriba en la parrilla están atravesados de todo, si no hay celosía de recorrido, el recorrido no se selecciona la transmisión digital de rejilla de la rejilla de mínimo.
Piezas a partir de \ (1 \) cuadrícula de números, y considerará que se ha atravesado \ (1 \) número cuadrícula.
estructura de tablero de ajedrez es tal que el número de la transmisión "coche" es estrictamente menor que el número de la transmisión "después" de la.

\(Solución:\)

\ (N \ leq 2 \) , el aparentemente ninguna solución, ya que en este caso, "trasera" de la cuenta de transferencia es 0, otros casos se analizan a continuación
teniendo en cuenta la y "coche" "trasera" salvo que "trasera" se puede mover tomar la dirección diagonal, podemos obtener la idea general:
"después", con el número de la dirección oblicua "después de" atraídos, por lo que finalmente se necesita para llegar a la línea de meta por transferencia, y el "coche" sin
(esto konjac sólo puede pensar en el áspero ideas, y el código de referencia del código de CA de la CF, la construcción es sorprendente, por lo que la explicación oficial de la misma)

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,a[505][505];
int main(){
	int i,j;
	scanf("%d",&n);
	if(n<=2){
		printf("-1\n");
		return 0;
	}
	a[1][n-1]=n*n;
	for(i=1;i<n;i++)
		a[i][n]=n*n-i-1;
	a[n][n]=n*n-1;
	int cnt=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			if(!a[i][j])a[i][j]=++cnt;
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++)
			printf("%d ",a[i][j]);
		printf("\n");
	}
	return 0;
}

F. Kate y la imperfección

\(Descripción:\)

Dado un número \ (n- \) , la salida \ (n-1 \) el número
de \ (I \) número representa el intervalo de \ ([1, n] \ ) seleccionando una de las \ (I \) Elemento grupo, de modo que \ (I \) entre el número veintidós \ (GCD \) mínimo máximo, esta salida mínimo

\(Solución:\)

Tal conjunto de configuración, para hacer que el valor máximo de mínimo gcd, en primer lugar puesto en ellos todos los primos, este valor mínimo es 1
a continuación, poner en tal se convierte en número mínimo de 2, 3, 4 y similares, y a continuación,
si entrar en un número compuesto, entonces es todo acerca de los números de la colección debe haber sido
difícil encontrar este es un proceso de criba Erichsen, por lo que mantener por Erichsen tamizado de los codiciosos
y después de la clasificación de salida a

\(Código:\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int isprime[500005],size,prime[500005],ans[500005];
int main(){
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)ans[i]=1;
	for(i=2;i<=n;i++)
		for(j=i*2;j<=n;j+=i)
			ans[j]=i;
	sort(ans+1,ans+n+1);
	for(i=2;i<=n;i++)printf("%d ",ans[i]);
	printf("\n");
	return 0;
}

Brbt

T1 un título Olimpiada de la escuela primaria en realidad quería a diez minutos
de patio T3 mayor parte del día no salió código, el código también ladrón feo, como un deficiente mental como
T4 puede de hecho preguntas incorrectas, minutos diez de hacer a la mañana siguiente a cabo
T5T6 para leer un título. . .
Se retiró dos años OI jugadores realmente pueden repartir piedad canto ~

Supongo que te gusta

Origin www.cnblogs.com/huangdalaofighting/p/12669111.html
Recomendado
Clasificación