当前位置: 首页 > news >正文

算法技巧——打表

什么是打表?

打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的一种策略。

交上去的代码有严格的运行时间限制,但是代码在本地运行时间没有限制,所以可以提交前,先在本地运行,算出所有可能的结果,正式提交代码,开个数组把所有答案存起来,做到直接输出。

注意这个技巧只适用于输入的值域不大(如,输入只有一个数,而且范围很小)的问题,否则可能会导致代码过长、MLE、打表需要的时间过长等问题。

打表

一般来说打表分为两部分:打表程序和提交程序。

打表程序算出所有可能数据对应结果,提交程序存储答案并输出

例子:级数求和

首先写程序,计算出不同输入值对应的所有答案

#include<bits/stdc++.h>
using namespace std;int f(int k)
{double s=0;double i=1;while(s<=k){s=s+1/i;i++;}return i-1;
}int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);for(int i=1;i<=15;i++){cout<<f(i)<<',';}return 0;
}

接着编写提交程序,把所有结果存储到数组中,根据输入的变量值,直接查找对应答案

#include<bits/stdc++.h>using namespace std;int res[15]={2,4,11,31,83,227,616,1674,4550,12367,33617,91380,248397,675214,1835421};int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int k;cin>>k;cout<<res[k-1];return 0;}

分段打表

代码长度有限,如果每个结果都存下来,不太现实,应用分块的思想,将数据范围分成多个块,预处理每一块的信息,对不满一块的直接暴力,即一种平衡了代码长度和复杂度的技巧

http://www.xdnf.cn/news/260479.html

相关文章:

  • 双向链表详解
  • 如何在纯C中实现类、继承和多态(小白友好版)
  • 测试——用例篇
  • 计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。
  • 动态思维——AI与思维模型【91】
  • python入门(1)变量与输入输出
  • 传奇各职业/战士/法师/道士/项链爆率及出处产出地/圣战/法神/天尊/魔血/祈福/探测/技巧/虹魔/祈祷
  • 在网鱼网吧测试文件试验成功
  • 第 8 篇:B/B+ 树:为海量磁盘数据而生
  • 腾讯云服务器:bgp服务器搭建要怎么做?bgp服务器的应用有哪些?
  • 第 3 篇:有序的世界:有序表 (TreeMap/TreeSet) 的概念与优势
  • 【大模型面试每日一题】Day 6:分布式训练中 loss 出现 NaN,可能原因及排查方法?
  • whl文件名后缀
  • 【Shell编程】条件表达式中[]和[[]]的区别
  • 截图软件、画图软件、左右分屏插件、快捷键
  • 小刚说C语言刷题—1018三角形类别
  • 快速将FastAPI接口转为模型上下文协议(MCP)!
  • Visionatrix开源程序可以简化您的 AI 图像生成工作流程 - Visionatrix 是一个基于 ComfyUI 构建的直观界面
  • Linux系统中升级GCC和G++工具版本至14.2.0
  • 二项分布习题集 · 答案与解析篇
  • 【愚公系列】《Manus极简入门》013-电影推荐专家:“银幕导航家”
  • 一、Shell 脚本基础
  • 2025最新AI绘画系统源码 - 画图大模型/GPT-4全支持/AI换脸/自定义智能体
  • PointPillars(一),跑通OpenPCDet中的demo
  • 解决C4D中ProRender渲染黑屏
  • 浅谈SpringBoot框架中的单例bean
  • Python虚假新闻检测识别
  • 订单系统冷热分离方案:优化性能与降低存储成本
  • AI人工智能的接入和使用
  • 第37课 绘制原理图——放置离页连接符