MT3048 区间按位或

思路:

使用ST表。ST表求区间最大值改为按位或即可。

ST模板可参考MT3024 max=min

代码:

1.暴力6/10

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int M = 5e5 + 10;
int n, m;
int num[N];
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> num[i];
    }
    int l, r;
    for (int i = 1; i <= m; i++)
    {
        cin >> l >> r;
        int ans = num[l];
        for (int j = l + 1; j <= r; j++)
        {
            ans = ans | num[j];
        }
        cout << ans << endl;
    }
}

 2.ST表:

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int M = 5e5 + 10;
int n, m;
int mn[N][50], Lg[N], a[N];
void pre()
{
    Lg[1] = 0;
    for (int i = 2; i <= n; i++)
    {
        Lg[i] = Lg[i >> 1] + 1;
    }
}
void ST_create()
{ // 创建ST表
    for (int i = 1; i <= n; i++)
    {
        mn[i][0] = a[i];
    }
    for (int j = 1; j <= Lg[n]; j++)
    {
        for (int i = 1; i <= n - (1 << j) + 1; i++)
        {
            mn[i][j] = (mn[i][j - 1] | mn[i + (1 << (j - 1))][j - 1]); // 改成或运算
        }
    }
}
int ST_q(int l, int r)
{ // ST表求区间或
    int k = Lg[r - l + 1];
    return (mn[l][k] | mn[r - (1 << k) + 1][k]); // 改成或运算
}

int main()
{
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    pre();
    ST_create();
    int l, r;
    for (int i = 1; i <= m; i++)
    {
        cin >> l >> r;
        cout << ST_q(l, r) << endl;
    }
}

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MT4手机版的布林线指标是一种常用的技术指标,能够帮助交易者分析价格的波动情况和趋势变化。在MT4手机版中,我们可以根据自己的需求对布林线的区间设置颜色。 要设置布林线的区间颜色,首先我们要进入MT4手机版的图表界面。在图表界面上,找到布林线指标并打开。布林线指标的默认设置是三条线,分别代表了价格的上轨、中轨和下轨。在设置颜色之前,我们可以先调整布林线的参数,比如周期和标准差等,来适应自己的交易策略。 接下来,我们点击布林线指标,进入参数设置界面。在参数设置界面中,我们可以找到与颜色相关的选项。一般来说,我们可以选择对上轨、中轨和下轨分别设置不同的颜色。点击每一条线的颜色选项,系统会弹出一个颜色选择器,我们可以根据自己的喜好选择合适的颜色。如果需要设置多个颜色,可以反复点击不同的线和颜色选项进行设置。 设置完颜色之后,点击确认或者应用按钮,系统会保存设置并在图表上显示出我们所设定的颜色。此时,我们就可以根据布林线的颜色来判断价格的上行或下行趋势,并根据趋势变化进行交易操作。 总之,在MT4手机版中设置布林线区间的颜色非常简单。我们只需要进入布林线指标的参数设置界面,在颜色选项中选择合适的颜色即可。通过设置不同颜色的布林线,可以更清晰地观察价格的变化趋势,提高交易的准确性和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值