Tabla de contenido:
T1:魔法阵~
T2:小biu放牛
T3:小A的游戏
T4:小biu闯关
……
T1: Matriz mágica ~
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
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
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:
Generalmente no se reproduce T 2 T 4 T2T4Parte de T 2 T 4