• 必不可少的题干 然而并没有什么鸟用

题干解析

  • 没啥,暴搜,思路详见代码

剪枝

  • ps.不懂请留言 然而并不一定能及时被看见
  • 剪枝1:迭代搜索,层数超了就返回。
  • 剪枝2:上限判断,如若剩余数的最大值加一起也小于n,返回。
  • 剪枝3:搜索顺序,从大到小枚举。
  • 剪枝4:如果当前值已经大于n,返回。
  • 剪枝5~N:很多在循环条件中的小剪枝。
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100001],u[100001],s[100001],ans;
inline int check(int t,int k){for(int i=t;i>=t/2;i--) if(u[k-a[i]]) return 0;return 1;
}
inline void jqsh(int t,int k){if(a[t]*(1<<(k-t+1))<n) return;if(a[t]>n||t>k) return;if(ans&&t>ans) return;if(a[t]==n){ans=t;for(int i=1;i<=ans;i++) s[i]=a[i];return;}for(int i=2*a[t];i>a[t];i--){if(check(t,i)==0){a[t+1]=i;u[i]=1;jqsh(t+1,k);a[t+1]=0;u[i]=0;if(ans) return;}}return;
}
int main(){for(;;){scanf("%d",&n);if(!n) return 0;a[1]=1;a[2]=2;ans=0;u[1]=u[2]=1;if(n==1) printf("1");else if(n==2) printf("1 2");else{for(int i=3;ans==0;i++)jqsh(2,i);for(int i=1;i<=ans;i++){printf("%d ",s[i]);s[i]=0;}}printf("\n");}return 0;
}

1443:【例题4】Addition Chains相关推荐

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

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

  2. Addition Chains

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

  3. 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 ...

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

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

  5. 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≤ ...

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

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

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

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

  8. POJ 2248 Addition Chains

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

  9. POJ 2248 算进 P110 Addition Chains

    满足如下条件的序列X(序列中元素被标号为1.2.3-m)被称为"加成序列": 1.X[1]=1 2.X[m]=n 3.X[1]<X[2]<-<X[m-1]< ...

最新文章

  1. java unlimited_具有无限参数的Java方法(Java method with unlimited arguments)
  2. stm32cubemx无法生成工程_经验分享 | STM32CubeMX + STM32F1系列开发时遇到的四个问题及解决方案分享...
  3. mysql正则表达式关键字_《MySQL必知必会》正则表达式
  4. fasttext初步使用
  5. SAP Spartacus 服务器端渲染调试的开发端版本
  6. SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
  7. 昆西·拉森的净资产是多少?
  8. html 定位_定位position
  9. 计算机缺少GD132.dll,Ubuntu12.04宝塔面板安装nginx报错,缺少GD library环境依赖包
  10. 计算机三级考点3:构建宽带城域网的基本技术与方案。
  11. Unity 接入有道智云AI - 文档翻译
  12. qemu在window使用树莓派
  13. 什么是Arduino? 了解有关此开源电子平台的信息
  14. 老王的电影网站 - 推荐系统入门(一)
  15. rvm安装和安装失败问题解决,使用rvm安装ruby
  16. 使用python实现地理位置查询经纬度
  17. Angular4 - 启动过程
  18. js中True、False如何判断
  19. 软件推荐——音速启动
  20. MIPCMS火车头采集之“500 Internal Server Error”

热门文章

  1. 视频教程-系统集成项目管理工程师考试-项目管理部分大全-软考
  2. black duck 下载_如何创建安全的Java软件:与Black Duck的Tim Mackey交谈
  3. Mac Safari 配置 IE 代理 (支持 IE 调试)
  4. 连接手表_用EMUI11连接华为手机与手表 出门不用全程盯着手机
  5. 安全信息管理系统(OSSIM)
  6. 社群运营 ≠ 微信客服
  7. 「可口可乐 + Zion」7天上线小程序是如何做到的?
  8. gr-osmosdr支持GNURadio的扩展
  9. 【Azure Data Platform】ETL工具(21)——Azure Databricks使用(1)——访问Azure Blob
  10. AFNetworking