首页 > 其他分享 >板子汇总

板子汇总

时间:2024-02-04 16:23:45浏览次数:27  
标签:rt last PT int sum 汇总 mid 板子

可持久化线段树

例题

#include<bits/stdc++.h>

using namespace std;

typedef long long LL;
const int N = 2e5 + 9;
int n, q, a[N], b[N];
map <LL, int> ib;
struct Persistent_Segment_Tree
{
    struct Point
    {
        int l, r;
        LL sum;
    }p[N * 25];
    int rt[N], cnt = 0;
    
    void Newpoint(int &rt, int last, int l, int r, int x, int v)
    {
        rt = ++cnt;
        p[rt] = p[last], p[rt].sum += v;
        if (l == r) return;
        int mid = l + r >> 1;
        if (x <= mid) Newpoint(p[rt].l, p[last].l, l, mid, x, v);
        else Newpoint(p[rt].r, p[last].r, mid + 1, r, x, v);
    }

    LL Query(int rt_1, int rt_2, int l, int r, int x, int y)
    {
        if(x <= l && y >= r)
            return p[rt_2].sum - p[rt_1].sum;
        LL res = 0;
        int mid = l + r >> 1;
        if (x <= mid)
            res += Query(p[rt_1].l, p[rt_2].l, l, mid, x, y);
        if (y >= mid + 1)
            res += Query(p[rt_1].r, p[rt_2].r, mid + 1, r, x, y);
        return res;
    }
}PT;

int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]), b[i] = a[i];
    sort(b + 1, b + 1 + n);
    int len = unique(b + 1, b + 1 + n) - (b + 1);
    for (int i = 1; i <= len; i++)
        ib[b[i]] = i;
    for (int i = 1; i <= n; i++)
        PT.Newpoint(PT.rt[i], PT.rt[i - 1], 1, len, ib[a[i]], a[i]);
    scanf("%d", &q);
    LL last = 0;
    while (q--)
    {
        LL l, r, x;
        cin >> l >> r >> x;
        l ^= last, r ^= last, x ^= last;
        int pos = upper_bound(b + 1, b + 1 + len, x) - (b + 1);
        if (pos)
            last = PT.Query(PT.rt[l - 1], PT.rt[r], 1, len, 1, ib[b[pos]]);
        else
            last = 0;
        cout << last << endl;
    }
    return 0;
}

标签:rt,last,PT,int,sum,汇总,mid,板子
From: https://www.cnblogs.com/With-penguin/p/18006442

相关文章

  • 使用CAN通信遇到的一些问题汇总
    由于我当时调试的时候,没有多余的板子来做CAN对端。在单端CAN调试发送信息时遇到过下面几种问题:1.CAN_ESR=0x03(ACK错误)2. CAN_ESR=0x04(隐性位错误)3. CAN_ESR=0x05(显性位错误) 后来使用回环测试,进行自发自收,排除程序本身的问题。回环测试的方法有两种,一种是你在配置CAN的......
  • AIStudio框架汇总及介绍
    长风破浪会有时,直挂云帆济沧海AIStudio.框架汇总开源版名称地址描述GiteeGitHub博客Wpf画板框架:示意图,流程图,SFC顺序控制图,逻辑图,思维导图,画板,Block基础功能,可编程画板(预览)等GiteeGitHub博客权限框架Wpf客户端:大屏,系统管理,流程中心,通用查询,代码生成,文......
  • 萌新的多项式学习笔记(板子)
    萌新的多项式学习笔记(板子)详细讲解FFT直接放板子structcp{ doublex,y; cp(doublexx=0,doubleyy=0){x=xx,y=yy;}};intr[maxn];cpoperator+(constcp&a,constcp&b){returncp(a.x+b.x,a.y+b.y);}cpoperator-(constcp&a,constcp&b){returncp(a.x-b.x,a......
  • 2023年度全年学术论文参考文献清单汇总
    状态时间详情结果 2023-07-2508:55'新媒体时代博物馆数字化,人文化,品牌化传播策略——以湖北省博物馆为例'全文链接:'https://wenku.baidu.com/view/bc9fdd13fac75fbfc77da26925c52cc58ad690d0?fr=xueshu_top'VP:病毒潜水艇时间:2023-07-2508:57  2023-0......
  • 智能制造-案例汇总
    小米北京智能工厂05绿色低碳智能能源管理建设智能厂务系统,将工厂内的空调、空气压缩机等机电系统全部接入工业数智平台,通过对能耗数据和环境数据进行分析挖掘,实现能耗优化和智能调度。创新做法不断突破、创新生产技术领先01工艺智能闭环调优技术针对制造工艺精细且机理复杂、工......
  • 【专题】2023年新消费趋势行业报告汇总PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35100原文出处:拓端数据部落公众号2022年,全球面临疫情和经济放缓的挑战,给消费市场带来了不确定性。消费者的消费理念和生活方式也发生了变化,更加注重产品的实用性和简单性。居民收入增长放缓,消费支出减少。然而,随着疫情逐渐得到控制,中国消费市场正......
  • 【专题】2023年直播、短视频行业报告汇总PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35077原文出处:拓端数据部落公众号中国直播电商行业正在经历蓬勃发展的时期,各大互联网平台之间的竞争日益激烈,而直播电商已成为品牌营销的常态。随着直播电商的崛起,对品牌提供了全新的产品营销和特惠促销渠道,同时也作为新产品生产和推广的媒体发布......
  • prometheus 配置文件汇总
    prometheusprometheus.yaml#myglobalconfigglobal:scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.evaluation_interval:15s#Evaluaterulesevery15seconds.Thedefaultisevery1minute.#scrape_......
  • 微信开发者工具快捷键汇总
     打开快捷键面板F1打开/关闭工具栏Ctrl+Shift+T打开/关闭模拟器Ctrl+Shift+D打开/关闭调试器Ctrl+Shift+M格式化文件Shift+Alt+F编译Ctrl+B刷新Ctrl+R删除行Ctrl+Shift+K向上复制行Shift+Alt+↑向上移动行Alt+↑向下复制行Shift+Alt+↓向下移动行Alt+↓更改所有匹......
  • 差异性分析汇总
    在做科研写论文的时候,我们总会听说要对数据进行差异性分析,那么何为差异性分析?差异性分析常用的方法有哪些?这些方法应该如何进行分类?如何选择?差异性分析的数据格式是怎么样的?软件如何操作、分析结果如何解读呢?今天我们通过这篇文章,对这些问题一一进行解答。一、什么是差异性分析?1......