SCU - 4499

已有 x,求利用除法和乘法算出 x^n的最小步数


IDA* 迭代加深地去搜
如果能在step步得出解,那么大于这个步数的也一定有解
所以从小到大枚举步数,然后暴力去搜
由于限定步数,就可以加一个 A*的估价剪枝
当前最值反复平方也不能在限定步数得出解的时候,则不往下搜
由于N只有1000,而 2^10 > 1000,所以最终步数其实不会很大

#pragma comment(linker, "/STACK:102400000,102400000")
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <queue>
using namespace std;
typedef pair<int,int> Pii;
typedef long long LL;
typedef unsigned long long ULL;
typedef double DBL;
typedef long double LDBL;
#define MST(a,b) memset(a,b,sizeof(a))
#define CLR(a) MST(a,0)
#define Sqr(a) (a*a)const int maxn=1e3, INF=0x3f3f3f3f;
int N;
int list[maxn];int dfs(int,int);
int Value(int);int main()
{#ifdef LOCALfreopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);#endifint T;scanf("%d", &T);for(int ck=1; ck<=T; ck++){list[0]=1;scanf("%d", &N);if(N==1){puts("0");continue;}for(int dep=1; dep<16; dep++){int ans=dfs(1, dep);if(~ans) {printf("%d\n", dep);break;}}}
}int dfs(int step, int Lim)
{if(step>Lim) return -1;
//  printf("debug: %d\n", step);int ans;for(int i=0; i<=step-1; i++){list[step]=list[step-1]+list[i];
//      printf("%d\n", list[step]);if(list[step]==N) return step;if(step+Value(list[step])>Lim) continue;ans=dfs(step+1, Lim);if(~ans) return ans;list[step]=abs(list[step-1]-list[i]);if(list[step]==N) return step;if(step+Value(list[step])>Lim) continue;ans=dfs(step+1, Lim);if(~ans) return ans;}return -1;
}int Value(int num)
{int val=0;if(num==0) return INF;else{while(num<N){num*=2; val++;}}return val;
}

[SCU 4499] 表达式 (IDA*)相关推荐

  1. ida提取hashab算法记录

    话说ida f5功能确实很强大,以后还会使用到f5进行提取代码,记录下这次提取代码过程中的想法. 首先需要注意f5生成的伪代码函数内的局部变量都是以1字节对齐的,f5把一个函数使用的堆栈中的地址都对应 ...

  2. Minst 0-9特征迭代次数曲线表达式

    本文尝试收集minst 0-9对不同收敛标准δ的特征迭代次数,并拟合n(δ)曲线. 制作一个有三个输出的网络,输入minst数据集0-9的前200张图片, 将这个网络简写成 S(Minst 0-9)8 ...

  3. 基于LLVM编译器的IDA自动结构体分析插件

    引用 这篇文章旨在介绍一款对基于LLVM的retdec开源反编译器工具进行二次开发的IDA自动结构体识别插件实现原理分析 文章目录 引用 简介 源码分析 LLVM编译器简介 Retdec源码分析 Kl ...

  4. 2020年IDA插件大赛:DynDataResolver夺冠

    今年IDA官方举办的插件开发比赛,结果已经出炉,前三名分别为: DynDataResolver Lucid 与 grap efiXplorer 01 DynDataResolver 项目地址: htt ...

  5. 开源一个IDA小插件:修复VMP dump导入函数

    简述: 通常我们在静态分析vmp加壳后的程序或者驱动时,都会选择将其跑开然后看dump文件.但是vmp会将某些函数地址进行混淆,所以当我们想看一个函数时,常常会见到如下图所示代码段: 面对上述情况,我 ...

  6. 软件安全 实验 2 软件动态、静态分析技术 TraceMe.exe OllyDbg IDA

    实验 2 软件动态.静态分析技术 练习 1 动态调试技术 1.实验说明 动态分析是在可控环境中运行程序或者模拟程序的执行过程,同时利用分 析工具,监控程序的所有操作,观察其执行流程和状态,获取执行过程 ...

  7. SCU新生赛2021 pwn wp

    前段时间的极客大挑战2021和2021年的SCU新生赛,最后一道题都没有做出来,作为一枚大二学长确实应该反省一下自己了.太菜了呜呜呜.极客大挑战因为打太久了,题目都快忘记了,就不写wp了. ret2t ...

  8. IDA*算法解十六宫格拼图问题

    IDA*算法, ID(Iterative Deepening)指的是迭代加深. 它的思想是重复进行限制最大深度的深度优先搜索(此限制从某个最小值遍历到最大值), 也称为深度受限搜索. 一般情况下, 为 ...

  9. 《IDA权威指南》复习笔记

    几种调用约定区别 _cdecl是C的调用约定,从右向左参数依次入栈,调用者平衡堆栈.所以函数外add+x平衡堆栈 _stdcall是微软的调用约定,从右向左参数依次入栈,被调用者平衡堆栈,所以平衡堆栈 ...

最新文章

  1. 四张图彻底搞懂CNN反向传播算法(通俗易懂)
  2. 【机器学习】--隐含马尔科夫模型从初识到应用
  3. arm汇编解析—tengine winograd_nhwc卷积实现
  4. java window的对象方法,[Java教程]如何真正重写window对象的方法_星空网
  5. 下标索引必须为正整数类型或逻辑类型_python量化基础 | 变量和简单的数据类型,零基础都可以看懂...
  6. 一段MYSQL的插入代码
  7. 本地计算机的硬件基本配置信息,Windows7系统如何查看硬件的基本配置
  8. 路由交换复习选择题题库
  9. Ubuntu安装字体
  10. 被裁掉的大龄程序员,为什么不联合起来成立一个专收大龄程序员的公司?
  11. CSS运用中所体会到的方法
  12. CAD学习笔记中级课【导入导出】
  13. 其实英语实在太简单了
  14. 利用excel批量操作MySql数据库
  15. 【操作系统】文件系统大作业
  16. Brendan Gregg: 一个实战派大神
  17. Python基本语法,让我们轻松入门学习Python!
  18. Oracle数据库,建库建表
  19. 百度Aistudio飞桨七日游体验python爬虫和分析数据
  20. 纯干货分享,新手小白如何精细化运营,玩转抖音小店无货源店群?

热门文章

  1. 解决win10下安装typescript后仍报“tsc不是内部或外部命令...”的问题
  2. JAVA学习记录(取反运算~)
  3. Codeforces987 E. Petr and Permutations(思维+逆序对)
  4. 希特管理学(希特)【内容摘要】
  5. 2022最新微信表白墙小程序源码+美观好看
  6. 一英寸芯片大小_芯片特征尺寸背后的秘密是什么
  7. 给定字符串A和B,输出A和B中的最大公共子串。
  8. 卡耐基人性的弱点目录
  9. 教你如何制作浪漫的表白网站
  10. 视觉SLAM笔记(53) g2o 操作后端优化