poj 2081 Recaman's Sequence【hash】

题目意思不难理解就是第m个位置的数是根据第m-1位置的数推出来的如果a[m-1]-m>0,并且a[m-1]-m在前面的序列中没有出现过那么a[m] = a[m-1]-m否则a[m] = a[m-1]+m

另外唯一需要注意的一点就是hash数组开大一点。

//打表

#include <stdio.h>
#include <iostream>

using namespace std;

const int MAXN=500003;

int a[MAXN]={0};
bool hash[10000000]={false};

void prepare()
{
	//预处理表
	int i;
	for(i=1;i<MAXN-1;i++)
	{
		if (a[i-1]-i>0 && hash[a[i-1]-i]==false)
		{
			a[i]=a[i-1]-i;

			//改变hash值
			hash[a[i-1]-i]=true;
		}

		else
		{
			a[i]=a[i-1]+i;

			//改变hash值
			hash[a[i-1]+i]=true;
		}
	}
}

int main()
{
	int k;

	prepare();

	while(~scanf("%d",&k) && k!=-1)
		printf("%d\n",a[k]);

	return 0;
}
时间: 2024-12-03 21:58:06

poj 2081 Recaman&#39;s Sequence【hash】的相关文章

poj 2262 Goldbach&amp;#39;s Conjecture 【素数筛】

这题必然的筛选法,出现了2个问题:1.开始开了一个 result 数组(全局变量),想把素数挨个存进来,虽然还计数估算了的,一直的runtime error , 后来发现是多此一举,去掉之后就变成wrong answer,看来可以编译了.这么说来,一百万对于两个大数组还是有点吃不消的  2.筛的时候一定要筛完整,for(j=2*i;j<MAXN;j+=i)prime[j]=1;这里开始用的 j<(MAXN/i),明显就错了. 另外我很好奇题目中说的"Goldbach's conjec

【策略】一致性Hash算法(Hash环)的java代码实现

[一]一致性hash算法,基本实现分布平衡. 1 package org.ehking.quartz.curator; 2 3 import java.util.SortedMap; 4 import java.util.TreeMap; 5 6 public class ConsistentHashingWithoutVirtualNode { 7 /** 8 * 待添加入Hash环的服务器列表 9 */ 10 private static String[] servers = {"192.1

【c3p0】报错:java.io.FileNotFoundException: Resource not found at path &amp;#39;/mchange-log.properties&amp;#39;

  配置项目启动初始,报错如下: 1 java.io.FileNotFoundException: Resource not found at path '/mchange-commons.properties'. 2 at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64) 3 at com.mchange.v2.cfg.BasicMul

poj 1503 Integer Inquiry【高精度】

这题总算是没有那么水的感觉了,不过还是水题,哈哈哈...题目主要是求高精度----大数的和,我专门写了一个add函数处理,sum和VeryLongIntegers是两个全局的变量,开始我还准备把sum也写成char型的字符串,但是考虑到结尾的'\0',那不是自找麻烦..果断换成int型数组,这样就容易处理多了. 在add函数中,我把VeryLongIntegers又反转了一次(即变成低位在前),也换成一个int型的数组,这样就变成两个int型数组的高精度加法了... 开始还觉得可能会WA一次,不

【BBED】BBED模拟并修复ORA-08102错误

[BBED]BBED模拟并修复ORA-08102错误   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 使用BBED修复ORA-08102错误(重点) ② BBED的使用 ③ 数据块格式的dump文件解释 ④ ORA-08102错误的trace文件解释 ⑤ 从rdba获取ROWID信息 ⑥ 其它实用技能   Tips: ① 本文在itpub(h

【会话】V$SESSION视图

[会话]V$SESSION视图 讲到Oracle的会话,就必须首先对V$SESSION这个视图中的每个列都非常熟悉.该视图在Oracle 11gR2下包含97列,在Oracle 12cR2下增加了6列,共包含103列.下面作者以表格的形式对这个视图中的重要列做详细说明. 表 3-26 V$SESSION视图 V$SESSION displays session information for each current session. 视图列序号 列 数据类型 说明 官方解释 备注 1 SADD

【原创】安装和使用 TPCC-MySQL 工具遇到的问题

本文主要讲述 TPCC-MySQL 工具在获取和使用时遇到的问题. ============= 我是分割线 ===============         Tpcc-mysql 是 percona 基于 tpcc 衍生出来的产品,专用于 mysql 基准测试,其源码放在 bazaar 上( Bazaar 是一个分布式的版本控制系统,采用 GPL 许可协议,可运行于 Windows.GNU/Linux.UNIX 以及 Mac OS 系统之上.Bazaar 由 Canonical 公司(Ubuntu

【原创】shell 操作之 read、cat 和 here document

本文主要学习总结一下三方面问题:  通过 read 进行行读 here document here document 的应用 [read] 在 linux 下执行 man read 能看到如下内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

               本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的.而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,是可见的.我们可以这样认为这个可预见的结果其出现的概率是100%.所以用计算机随机函数所产生的"随机数"