http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1937

题目大意:创造一个数列,使得它:

1.单调不递减。

2.其中一个元素一定存在其前面两个元素之和与它相等。

3.开头为1,结尾为n。

求一个这样的最短数列。

——————————————————————————————————

IDA*一定的(n<=100)

对于IDA*是什么不了解的,可以看我的置顶骑士精神那道题。

我们的估价函数就是当前的值翻多少次二倍后能得到n。

显然假设当前的值为i,则答案为log2(n/i)。

然后就是和普通的IDA*一样做了。

(第1条不要忘了,我就是被这样坑过TAT)

#include<cstdio>
#include<cstring>
#include<cctype>
#include<iostream>
#include<cmath>
using namespace std;
int n,ans,a[5001];
inline int h(int step){if(a[step]==n)return -1;return log(n/a[step])/log(2);
}
inline bool dfs(int step){if(step==ans){if(h(step)==-1)return 1;return 0;}if(h(step)+step>ans)return 0;for(int i=step;i>=1;i--){for(int j=i;j>=1;j--){if(a[i]+a[j]>n||a[i]+a[j]<a[step])continue;a[step+1]=a[i]+a[j];if(dfs(step+1))return 1;}}return 0;
}
int main(){a[1]=1;while(scanf("%d",&n)!=EOF&&n){for(ans=1;;ans++){if(dfs(1))break;}printf("%d",a[1]);for(int i=2;i<=ans;i++)printf(" %d",a[i]);printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/luyouqi233/p/8016461.html

ZOJ1937:Addition Chains——题解相关推荐

  1. Addition Chains

    Addition Chains An addition chain for n is an integer sequence <a0, a1,a2,-,am> with the follo ...

  2. C++迭代加深搜索及其例题讲解—————Addition Chains

    前言: 学习算法时,一个关键的问题是什么时候来使用它.在一些搜索问题中,使用普通的DFS可能会让你把时间浪费在深度非常大而且答案不是最优的搜索过程上,甚至有的时候DFS搜索的深度是无穷的,而BFS虽说 ...

  3. POJ - 2248 Addition Chains(dfs+迭代加深)

    题目链接:点击查看 题目大意:我们规定加法链有如下特点: 现在给出一个数n,求该数的最短加法链 题目分析:这个题首先我们可以枚举所有可能性,并且进行适当的剪枝: 当前长度大于等于最优解时回溯 当前值等 ...

  4. Addition Chains(信息学奥赛一本通-T1443)

    [题目描述] 已知一个数列a0,a1--am,其中a0=1,am=n; a0<a1<a2<--<am−1<am.对于每个k(1≤k≤m)满足ak=ai+aj(0≤i,j≤ ...

  5. POJ2248 Addition Chains(迭代加深搜索)

    题目链接: poj2248 题目大意 给你一个数字n,你需要构造一个首项为1,末项为n的递增序列,并且这个序列的非首项的数字都能从它前面找到两项之和与之相等,前面的两项可以为同一项,即可重复,并且要让 ...

  6. 【poj2248】 Addition Chains(迭代加深)

    题目链接:http://poj.org/problem?id=2248 分析 当搜索树的分支随深度增大得很快的时候,最适合用迭代加深. 设置一个dep限制搜索深度,一旦到达dep立刻回溯. dep逐渐 ...

  7. POJ 2248 Addition Chains

    这一道题目用的仍然是DFS的方法.准确的说应该是Iterative Deepening Search, 关键在于理解,我们要找到的是最小长度,那么对应过来就是最小的深度.同时,还要理解, 如果当前深度 ...

  8. 1443:Addition Chains

    const int N=1e5+5;int n,m,t;int i,j,k;int minn=inf;int a[N],ans[N],len;void DFS(int step) //已经确定了 st ...

  9. 1443:【例题4】Addition Chains

    必不可少的题干 然而并没有什么鸟用 题干解析 没啥,暴搜,思路详见代码 剪枝 ps.不懂请留言 然而并不一定能及时被看见 剪枝1:迭代搜索,层数超了就返回. 剪枝2:上限判断,如若剩余数的最大值加一起 ...

最新文章

  1. ARP解决方法/工具 真假ARP防范区别方法 ARP终极解决方案
  2. selenium2与python自动化2-元素定位
  3. Leetcode400Nth Digit第N个数字
  4. java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览
  5. 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
  6. [Android] TabLayout设置下划线(Indicator)宽度
  7. 非集成搭建wampp环境
  8. SQLite语句总结
  9. java 8-8 接口的练习
  10. wsdl2java 参数_wsdl2java参数详解
  11. ubuntu处理openproj不能使用问题
  12. adxl345取出值怎么算角度_ADXL345测量倾斜角度数据跳动
  13. 使用node批量压缩图片
  14. 极限思想之阿基里斯和乌龟赛跑
  15. 仓储系统主要注意事项
  16. omitting directory `xxx/'
  17. 黑猴子的家:Kali Linux + Vmware 15 安装操作系统
  18. 一篇文章,中文发完英文发,算“一稿多投”吗?
  19. 互联网快讯:国家植物园在北京正式揭牌;极米Z6X Pro、极米H3S获赞赏;人民币兑日元逼近20大关
  20. 《所谓高情商,就是会说话》思维导图精华分享

热门文章

  1. 【Nan‘s 吴恩达机器学习笔记】第八、九章 神经网络
  2. arm裸机【4】 --- 一步步点亮LED(一)
  3. 鸿蒙os 升级名单,华为官方公布鸿蒙系统手机升级名单:5年前老机型都有,良心了!...
  4. 中国最美的一千个汉字 : 千字文2
  5. 青海省计算机考试准考证2022
  6. 解决STM32 PWM有输出波形,但是舵机(DS3115)不动问题
  7. 怎么把图片做成流动效果?推荐几个制作方法
  8. linux透明防火墙接入fte 300 网络的问题
  9. [状压dp][dfs] Jzoj P2679 跨时代
  10. 三个变量存在一个协整方程_Johansen结果显示三个协整关系是什么意思呢?