标签:poj
这道题目一开始就能知道考点在如何缩短查找时间。所以加快查找是我们的重点。但是在大数据面前,查找算法都不够快,所以我们用简单的hash思想来做。
我们开一个数组a,当出现了一个数b时,把该数作为下标调整值,即a[b] = -1,下一次出现该值的时候直接去找这个值作为下标的a值是否为-1即可。
#include<stdio.h> #include<string.h> #define MAX 5000010 int p[MAX]={0}; int s[MAX]={0}; int main(){ int n,i; p[0]=0; s[0]=-1; for(i=1;i<=500000;i++){ p[i]=p[i-1]-i; if(p[i]<0 || s[p[i]]==-1){ p[i] = p[i-1]+i; } s[p[i]]=-1; } while(scanf("%d",&n)&&n!=-1){ printf("%d\n",p[n]); } return 0; }
poj 杂题 - 2081 Recaman's Sequence
标签:poj
原文地址:http://blog.csdn.net/u010006643/article/details/45644737