首页 > 其他分享 >ST表

ST表

时间:2023-08-02 10:33:53浏览次数:25  
标签:cout int 个数 ST 区间 tie 2j

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N = 1e5+9;
 4 
 5 int n,m;
 6 int a[N];
 7 int f[N][30];//表示 从第i个数开始(包括第i个)走2j个数的一个区间
 8 
 9 int main (){
10     std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
11     cin >> n >> m;
12     for(int i=1;i<=n;i++){
13         cin >> a[i];
14     }
15     for(int i=1;i<=n;i++) f[i][0] = a[i];//第i个数走2的0次方就是它本身
16     for(int j=1;j<=20;j++){//因为是走2的j次方,所以20就差不多够大了
17         for(int i=1;i+(1<<j)-1<=n;i++){//设置边界,即从第i个数走过2的j次方个数后 不能超过数的总个数
18             f[i][j] = max(f[i][j-1],f[i+(1<<(j-1))][j-1]);//i~i+(1<<j)这个区间由两个组成。i走2j-1个数是一个区间,i+2j-1再走2j-1个数是另一个区间,这两个小区间的的最大值就是整个大区间的最值
19         }
20     }
21     int l,r;
22     for(int i=1;i<=m;i++){
23         cin >> l >> r;
24         int k = log2(r-l+1);//   2k <= log2(r-l+1) < 2k+1,所以可以算出k,用k来覆盖区间
25         cout << max(f[l][k],f[r-(1<<k)+1][k]) << "\n";//左区间由l开始走2k个数,右区间由r和k倒推起点
26     }
27     return 0;
28 }

 

标签:cout,int,个数,ST,区间,tie,2j
From: https://www.cnblogs.com/huangjh04/p/17599098.html

相关文章

  • [转载] 解决Pycharm中右键运行python程序时出现Run ‘pytest‘ in XXX.py
    1、在Pycharm中右键运行python程序时出现Run'pytest'inXXX.py,这是进入了Pytest模式。2、解决办法进入到File-Seetings-Tools-PythonintegratedTools页面,找到Testing下的Defaulttestrunner,把Pytest设置为Unittests就可以了————————————————原文链接:ht......
  • nvidia-driver-latest-dkms包的解释
    nvidia-driver-latest-dkms并不是一个特定的工具,而是一个软件包名称,通常在Linux系统中用于安装最新的Nvidia显卡驱动。在Linux系统中,Nvidia显卡驱动通常由不同的软件包管理器(如APT、DNF、YUM等)提供。nvidia-driver-latest-dkms是其中一个可能的软件包名称,具体取决于所使......
  • requests--post中json中文编码问题
    问题requestspost提交json数据时,默认在库中ensure_ascii为True。会对中文进行unicode编码。但是有的时候服务端并没有处理中文,没有进行解码,而我们又改不了服务端,就会出现问题!解决修改库的代码,添加上对应的ensure_ascii参数。不推荐,换个环境就用不了了。推荐:自己......
  • Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|arra
    今天在安装attachments插件时后台提示UncaughtTypeError:count():Argument#1($value)mustbeoftypeCountable|arrayin64,这个是用php8开发经常会碰到的一个错误,如何解决呢?随ytkah一起来看看这个错误是在将count()函数用于不可计数的变量或非数组时发生的。要解决这个......
  • STM32采用主从计时器实现精确脉冲输出
         首先按前面所述的主从计时器要求配置好主从计时器,这是最基本的要求。主计时器负责设置脉冲输出的频率以及输出脉冲,从计数器所控制输出的脉冲数。具体过程是这样的,主进程启动主从计时器,从计时器通过主计时器输出的触发信号开始脉冲计数,当达到指定的计数值后,产生中......
  • vue--day50--todolist案例自定义事件修改footer 和header 修改
    1.MyHeader.vue<template><divclass="todo-header"><!--v-model:="title"是实时绑定的--><inputtype="text"placeholder="请输入你的任务名称,回车键确认"v-model="title"@keyup.enter="add"/>......
  • Java将CST的时间字符串转换成需要的日期格式字符串
    ‘CannotformatgivenObjectasaDate’翻译出来就是:无法将给定对象格式化为日期一般的显示当前时间都是SimpleDateFormatdf=newSimpleDateFormat("yyyyMMdd");Datedate=newDate();stringstring=df.format(date); 可是这次咋咋的都报这个错查了又查,网上都......
  • CF526F Pudding Monsters
    CF526FPuddingMonsters题意给定一个\(n\timesn\)的棋盘,其中有\(n\)个棋子,每行每列恰好有一个棋子。求有多少个\(k\timesk\)的子棋盘中恰好有\(k\)个棋子。\(n\le3\times10^5\)。题解首先注意到每行每列只有一个数这个性质。这意味着我们可以将这个二维数......
  • 运动控制- PLC的“扫描周期”以及ST指令的特性
    水滴社区的文章[资料分享]【资料分享】PLC的“扫描周期”以及ST指令的特性http://bbs.inovance.com/forum.php?mod=viewthread&tid=5515&_dsign=2e02117e理解codesys的Taskhttps://www.bilibili.com/video/BV1NG411M741/?p=7......
  • C语言 typedef 定义 struct 变量
    typedefstructnode{ datatypedata; structnode*next;}linknode,*linklist;创建单链表linklistL;//等价于structnode*L可以理解为,通过typedef,将structnode*替换为linklist当我们在使用LinkListL定义变量时,实际上就是在使用structnode*L定义变量使得以后......