打表(例题 + 概念)

打表是信息学竞赛中一种优化时间复杂度的策略,通过预先计算并存储有序或常量表,来解决特定问题。例如在约瑟夫环问题中,当限制条件较小,可以直接通过打表快速求解,避免复杂算法。本文通过实例分析了打表的应用,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

打表:
打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的一种策略。
例题:
例1:https://sdnuoj.rainng.com/problem/show/1304
分析: 约瑟夫环问题,正常跑的话肯定会很慢,但是这题k只到14…所以,偷个懒直接打表到14就好了
代码:

#include <bits/stdc++.h>//因为k最多只有十四个所以可以暴力打表 
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
const int N = 1e5 + 7;

int k, ans; 

int main(){
   
	std::ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	while(cin >> k){
   
		if(k == 0) break;
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值