(Fichier IO): entrée: camphor.in sortie: camphor.out
limite: 1000 ms contraintes d'espace: 131072 KB restrictions spécifiques
Aller ProblemSet
Titre Description
camphrier connu comme l' un des quatre célèbres Jiangnan unique, son écorce rugueuse, la texture est très uniforme, jamais divisé tache marbrée de peuplier, de saule tumeur nodules non, un tronc sous-branche deux, deux à quatre long chemin à parcourir, ne pas couper les coins ne seront pas superflus, en forme de couronne sphérique, et tracer la courbe gracieuse dans le ciel. En plus des avantages ci - dessus, camphrier a une arme secrète. C'est ........................ Avec son simple, lourd bon caractère pour gagner la faveur d'un petit renard! ! ! Dire qu'un jour, un petit renard lac marche, tout d'un coup soudain de souffle du vent, elle se hâta de fermer les yeux. Quand elle ouvrit les yeux, et les trouva beau lac plus sur une rangée de camphrier soignée. Petit renard est très excitée, elle est observatrice de chaque arbre, et le nombre du nombre de leurs feuilles. Elle a estimé que si le nombre de feuilles de deux arbres adjacents premier à discordant. Ainsi , un petit renard comme ligne sélectionnée parmi la pluralité d'arbres de camphre, dans les conditions qui satisfont le nombre de feuilles adjacentes des deux arbres ne sont pas premiers entre eux, de sorte que l'arbre le plus possible.
Entrer
la première ligne un nombre entier positif
, exprimé
camphriers. La deuxième ligne
un nombre entier positif, le
le nombre i représente le nombre de feuilles d'arbres camphrier.
Sortie
un entier positif indiquant combien d'arbres jusqu'à l'élection.
entrée d' échantillon
. 6
. 6. 8 15. 5 2. 3
Exemple de sortie
4
limites de la plage de données
pour
% Données
Pour
% des données
, le nombre de feuilles
Note: l'arbre sélectionné ne peut pas changer sa position,savoir si le premier sélectionné
l'arbre, dans lequel
considéré
与
voisin.
Astuce
Sélection
, le premier
,part
somme première
arbre
idées de résolution de problèmes
que nous ne pouvons pas trouver que c'est une de la séquence la plus longue chute! ! ! Nous des conditions
dans
est le plus grand diviseur commun de plus d'un, mais seulement
point. . En fait, nous pouvons
s »
changé
, il ne sera pas chronométrer, mais ne me demandez pas pourquoi. .
pour aller de ~
code
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int a[100010],n,f[100010],ans;
int check(int x,int y)
{
if(x%y==0)
return y;
else
return check(y,x%y);
}
int log(int x){
int t=0;
while(x>0)
{
x=x/2;
t++;
}
return t;
}
int main(){
freopen("camphor.in","r",stdin);
freopen("camphor.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
f[i]=1;
}
for(int i=2;i<=n;i++)
{
for(int j=i-log(i)*2;j<=i-1;j++)
if (j>0)
if(check(a[i],a[j])>1)
f[i]=max(f[i],f[j]+1);
}
for(int i=1;i<=n;i++)
if(f[i]>ans)
ans=f[i];
printf("%d",ans);
}