[Grupo de popularidad del 27.10.2020] Solución de concurso de simulación SSL

Tabla de contenido:

T1:魔法阵~
T2:小biu放牛
T3:小A的游戏
T4:小biu闯关

……

T1: Matriz mágica ~

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

análisis:

Se puede concluir que si desea cortar un polígono regular , el número de lados restantes debe ser nnn esun factor
que diremosenumeración de todos los polígonos restantes y máximoen la línea

CÓDIGO:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=20005;
int n,a[N],fac_num,sum,factor[N],maxn,k,fac_tot,edge,nowfac;
void count_fac(int x)
{
    
    
	for(int i=2;i<x;i++)
		if(x%i==0)
		{
    
    
			fac_num++;
			factor[fac_num]=i;  //统计因数
		}
}
void tp()
{
    
    
	if(fac_num==0||n==3)  //特判
	{
    
    
		printf("%d",sum);
			exit(0);
	}
}
int main(){
    
    
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
    
    
		scanf("%d",&a[i]);
		sum+=a[i];
	}
	maxn=sum; count_fac(n); tp();
	for(int i=0;i<fac_num;i++)
	{
    
    
		nowfac=factor[i];k=1;
		while(nowfac--)  
		{
    
    
			fac_tot=0;edge=0;
			for(int j=k;j<=n;j+=factor[i])
			{
    
    
				fac_tot+=a[j];
				edge++;  //枚举nowfac边形的所有和 
			}
			if(edge>=3)
				maxn=max(maxn,fac_tot);  //最大和
			k++;	
		}
	}
	printf("%d",maxn);
	return 0;
} 

T2: ganado pequeño de pastoreo biu

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

análisis:

Dos puntos de codicia para considerar el pastoreo de ganado,
calcular la cabeza de la vaca por entradah ae un d cola colat un i l entonces juzgar la situación de fuera de límites

CÓDIGO:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N=1e6+5; 
int n,m,x,a[N];
bool check(int p)
{
    
    
	int head=0,tail=0;
	for(int i=1;i<=n;i++)
	{
    
    
		head=max(tail,a[i]-x-p);  //计算head位置
		if(abs(head-a[i]+x)>p) return 0;  //判越界
		tail=head+2*x; //计算tail
		if(tail>m) return 0;  //判越界
	}
	return true;
}
int main(){
    
    
	scanf("%d%d%d",&n,&x,&m);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	int l=0,r=m;
	while(l<=r)  //二分答案
	{
    
    
		int mid=(l+r)>>1;
		if(check(mid)) r=mid-1;
		else l=mid+1;
	} 
	if(l==(m|1)) printf("-1");  //m+1
	else printf("%d",l);	
	
	return 0;
}

T3: el juego de Little A

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

análisis:

Si no podemos decirlo, debe haber letras repetidas.
Podemos encontrar una propiedad : cuando la distancia entre el primer par de letras repetidas <= k <= k<=No se puede juzgar cuando k es
comoS = "SASS" S = "SASS"S=" S A S S " k = 2 k = 2k=2 en punto si se dejaAS ASA S se puede borrar1, 3 1, 31 ,3 o1, 4 1, 41 ,4 Entonces es imposible juzgar
, el primer par es1, 3 1, 31 ,3 la distancia es2 22 Cumple con la naturaleza y no se puede juzgar

CÓDIGO:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,k,flag;
string s;
int main(){
    
    
	scanf("%d",&n);
	while(n--)
	{
    
    
		flag=0; 
		cin>>s;
		scanf("%d",&k);
		if(k==s.length()){
    
    
			printf("Certain\n");  //特判
			continue;
		}
		for(int i=0;i<s.length();i++)
		{
    
    
			for(int j=i+1;j<s.length();j++)
				if(s[i]==s[j])  //重复字母
				{
    
    
					int dis=j-i; //距离
					if(dis<=k) 
					{
    
    
						flag=1;
						printf("Uncertain\n");
						break;
					}
				}
			if(flag) break;
		}	
		if(!flag)
			printf("Certain\n");
	}
	
	return 0;
}

T4: Little biu se abre paso

Escribí un artículo específicamente sobre
Ababa

para resumir:

Inserte la descripción de la imagen aquí
Generalmente no se reproduce T 2 T 4 T2T4Parte de T 2 T 4

Supongo que te gusta

Origin blog.csdn.net/dgssl_xhy/article/details/109335254
Recomendado
Clasificación