首页 > 编程语言 >倍增算法【模板】

倍增算法【模板】

时间:2025-01-15 20:43:21浏览次数:1  
标签:const 2522% ll 253A% blog 算法 using 倍增 模板

原题链接https://www.luogu.com.cn/problem/P3865
题解链接https://blog.csdn.net/WJTF2/article/details/136239183?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522423e6dee0d2c53e9645ecba193312fb3%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=423e6dee0d2c53e9645ecba193312fb3&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-136239183-null-null.142v101pc_search_result_base2&utm_term=st%E8%A1%A8

#include<bits/stdc++.h>
using namespace std;

#define endl '\n'
using ll = long long;
using pii = pair<char, int>;
const double PI = acos(-1);
const int N =1e5+10;
const int mod = 1e9 + 7;
ll st[N][30];
void solve(){
	ll n,m;cin>>n>>m;
	for(ll i=1;i<=n;i++) cin>>st[i][0];
	for(ll j=1;(1<<j)<=n;j++)//枚举区间长度
		for(int i=1;i+(1<<j)-1<=n;i++){//枚举2^i长度的可能的子区间
			st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
		}
	while(m--){
		ll l,r;cin>>l>>r;
		ll x=floor(log2(r-l+1));
		cout<<max(st[l][x],st[r-(1<<x)+1][x])<<endl;
	}
}
int main() {
	
	ios::sync_with_stdio(false);
	cin.tie(nullptr), cout.tie(nullptr);
	
	int T = 1;
//	cin>>T;
	while (T--) {
		solve();
	}
	
	return 0;
}

标签:const,2522%,ll,253A%,blog,算法,using,倍增,模板
From: https://www.cnblogs.com/laileou/p/18673691

相关文章

  • 令牌桶算法揭秘:原理、优势与实战注意事项
    令牌桶算法是一种流量控制算法,主要用于限制系统的访问频率,就像给系统的访问流量装了一个“阀门”。工作原理想象有一个桶,这个桶里可以放一些“令牌”,每个令牌代表了一次访问的权限。系统会以固定的速度往这个桶里加令牌,比如说每秒加10个。当有请求想要访问系统时,就需要从这......
  • 机器学习之DBSCAN算法自动分类
    机器学习之DBSCAN算法自动分类目录机器学习之DBSCAN算法自动分类1DBSCAN算法1.1概念1.2关键概念:1.3算法步骤:1.4函数和参数1.5优缺点2实际测试2.1部分数据展示2.2代码测试1DBSCAN算法1.1概念DBSCAN(Density-BasedSpatialClusteringofApplications......
  • TEMPLATE METHOD(模板方法)—类行为型模式
    1.意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2.动机考虑一个提供Application和Document类的应用框架。Application类负责打开一......
  • AIGC视频生成算法/模型总结
    这里,我们汇总前面完成的工作(图像生成方面的研究),总结近两年来突出的视频生成算法/模型,并展望未来的工作计划(视频生成)。文章目录前情提要——图像生成后续介绍——视频生成2023年进展2024年进展前情提要——图像生成此前,我们深入钻研图像生成领域,对一系列关键......
  • 算法题(36):合并区间
    审题:需要把区间兼容的区间合并起来,并存入二维数组中返回思路:由于数据是乱序的,我们直接进行判断会很麻烦,所以我们先对区间的左边界进行升序排序,这样子可以保证数据被分成一个个连续区间,只需要按顺序遍历判断即可。判断逻辑:answer二维数组作为返回数组。首先我们把第一个......
  • 代码随想录算法训练营第二十天 | 235. 二叉搜索树的最近公共祖先、701. 二叉搜索树中
    235.二叉搜索树的最近公共祖先题目链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/description/文档讲解:https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%......
  • 算法随笔_6: 下一个排列
    上一篇:算法随笔_5:接雨水-CSDN博客题目描述如下:整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr=[1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排......
  • 【前端】自学基础算法 -- 25.动态规划-01背包问题
    动态规划-01背包问题简介动态规划(DynamicProgramming,简称DP)是一种解决复杂问题的方法,它将问题分解为更小、更简单的子问题,并存储这些子问题的解,以避免重复计算。动态规划通常用于优化问题,如求最大值、最小值或计数问题。动态规划的基本思想是将大问题分解为小问题,并从......
  • 2025-1-15-十大经典排序算法 C++与python
    文章目录十大经典排序算法比较排序1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序非比较排序8.计数排序9.桶排序10.基数排序十大经典排序算法十大经典排序算法可以分为比较排序和非比较排序:前者包括冒泡排序、选择排序、插......
  • 模式识别课程设计报告-Iris鸢尾花样本集多种分类算法实现
     课程实验报告,从前人的总结分享中学习借鉴了很多,上传记录,或许能帮到有需要的人。任务一:(1)从sklean中导入iris数据集(2)从CSV文件中导入iris数据集任务二:(1)利用sklearn中的model_selection.train_split()函数将样本集划分为训练集和测试集(2)定义一个函数plot_points(),该函数的功能......