首页 > 其他分享 >莫队模板

莫队模板

时间:2024-07-17 10:31:14浏览次数:17  
标签:cnt int cin ++ -- now 莫队 模板

#include<bits/stdc++.h>

using namespace std;

using i64 = long long;

const int N = 1e6 + 5;
int cnt[N], a[N];

struct query {
    int l, r, id;
};

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int M = sqrt(n);

    for (int i = 1; i <= n; i ++)
        cin >> a[i];

    int m;
    cin >> m;
    vector<query> q(m);
    for (int i = 0; i < m; i ++) {
        int l, r;
        cin >> l >> r;
        q[i] = {l, r, i};
    }
	//按分块大小排序,在同一个块的按块的奇偶性将右端点正序或逆序排序
    sort(q.begin(), q.end(), [&M](query x, query y) {
        return (((x.l / M) ^ (y.l / M)) ? x.l < y.l : ((x.l / M) & 1) ? x.r<y.r: x.r>y.r);
    });

    int l = 1, r = 0, now = 0;
    vector<int> ans(m);
    for (int i = 0; i < m; i ++) {
        auto [ql, qr, id] = q[i];
		//易错点
        while (l < ql)  now -= !--cnt[a[l++]];
        while (l > ql) now += !cnt[a[--l]]++;
        while (r < qr) now += !cnt[a[++r]]++;
        while (r > qr) now -= !--cnt[a[r--]];

        ans[id] = now;
    }

    for (int i = 0; i < m; i ++)
        cout << ans[i] << "\n";

    return 0;
}

标签:cnt,int,cin,++,--,now,莫队,模板
From: https://www.cnblogs.com/Kescholar/p/18306761

相关文章

  • vue基础day01(MVVM、绑定、事件、结构模板)
    vue基础一、什么是vue构建用户界面的渐进式框架,采用自底向上逐层应用开发核心理念:数据驱动视图,组件化开发二、框架和库的区别框架:一套完整的解决方案,对项目的侵入性较大,项目如果需要更换框架,需要重新架构整个项目库:提供了一个小的功能,对项目的侵入性较小,如果某个库无......
  • Asp .Net Core 系列:基于 T4 模板生成代码
    目录简介组成部分分类VisualStudio中使用T4模板创建T4模板文件2.编写T4模板3.转换模板中心控制Manager根据MySQL数据生成实体简介T4模板,即TextTemplateTransformationToolkit,是微软官方在VisualStudio中引入的一种代码生成引擎。自VisualStudio2008开始,T4模板就被......
  • 【模板】插头 DP
    为了利用位运算的良好性质,采用四进制状态压缩代替三进制通过哈希表压缩有限的状态与普通的按行滚动的滚动数组不同,插头DP中的滚动数组是按格滚动的因为布尔数组值默认为false,所以我们可以用“true”代表“可通行”转移时需要找到与之匹配的括号——实现算法时不能够总是代入......
  • 关于静态文件目录与模板引用和Nginx location块的适配设置
    项目配置文件内关于静态文件的设置项#静态文件的URL前缀STATIC_URL='/static/'#项目根目录的静态文件目录STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),os.path.join(BASE_DIR,'parallel/static'),os.path.join(BASE_DIR,'blog/static&#......
  • 海量元宇宙场景模板,视创云展解锁你的无限创意虚拟空间!
    ​一站式元宇宙虚拟活动云平台视创云展,集成了海量的元宇宙场景模板,并借助其强大的模块化功能体系,使得用户能够轻松跨越技术门槛,迅速创作出高质量的3D场景。用户可自由发挥创意,构建出独一无二的元宇宙空间,完美契合多样化的场景应用需求。1、海量模板,随心选择:视创云展拥有海量......
  • 模板——类模板2——继承,文件,友元
    1.类模板与继承1.1当子类继承的父类是一个类模板时,子类在声明时,要指定父类中T的类型1.2如果不指定,编译器无法给子类分配内存1.3如果想灵活指定父类中的T的类型,子类也需变成类模板template<classT>classBase{public: Tage;};//classSon:publicBase//错误,c++编译......
  • 模板——类模板1--与函数的关系
    1.类模板基本语法template<classT,classT2>类template<classNameType,classAgeType>classPerson{public: Person(NameTypename,AgeTypeage) { this->m_name=name; this->m_age=age; } voidShowPerson() { cout<<"姓名:&quo......
  • 类模板案例——数组类封装(vector<>的逻辑代码)
    .hpp文件#pragma#include<iostream>usingnamespacestd;template<classT>classMy_arry{public: My_arry(intcapacity)//赋初值 { this->m_capacity=capacity;//容量 this->m_Arry_size=0;//大小 this->m_Arry_Addres=newT[capacity];......
  • DedeCMS网站模板的title、description、keywords应该怎么写?
    首页​<title>{dede:global.cfg_webname/}-{dede:global.cfg_websubtitle/}</title><metaname="description"content="{dede:global.cfg_description/}"><metaname="keywords"content="{dede:global.cfg_k......
  • 模板——函数模板的基本语法和调用规则
    1.模板函数    1.1分为自动类型堆到和显示指定类型template<classT>voidSwapNum(T&a,T&b){ Ttemp=a; a=b; b=temp;}voidtest01(){ inta=10; intb=20; doublec=30.5; doubled=40.8; SwapNum(a,b);//自动类型推导 SwapNum<in......