正解:莫队/分块

解题报告:

传送门

ummm这题耗了我一天差不多然后我到现在还没做完:D

而同机房的大佬用了一个小时没有就切了?大概这就是大佬和弱鸡的差距趴QAQ

然后只是大概写下思想好了因为代码我还没打出来QAQ

先说莫队?

莫队似乎有俩方式能过呢

首先是个暴力,就只对l1r1排序让l2r2乱跳,然后神仙hl过去了?然后我就过不去?委屈:D

然后可以前缀和优化一波,这个大概是最稳的,然后文佬的博客似乎写了qwq有时间再研究下趴QAQ大概思路知道一下就成立就是个二维前缀和的玩意儿qwq

然后说分块

ummm分块这个还,挺神仙的qwq,我研究了下那个代码但还没有很清楚QAQ先把写了点儿注释的放上来QAQ

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

typedef long long LL;
;
;

int n,m,tmp,q,B;
struct Block{ int a[N],b[M],c; }b[M];//b[i]:这个块内部第i个元素是啥 a[i]:包括这个块,data=i的数出现了几遍 c:这个块有多大
int bl[N],a[N],t1[N],t2[N],t3[N],t4[N];
LL f[M][M];

inline int in()
{
    ;;
    '))ch=getchar();
    ;
    )+(x<<)+(ch^'),ch=getchar();
    return y?x:-x;
}
]) ;else return bl[x]; }
]) ;else return bl[x]; }
LL work(int l1,int r1,int l2,int r2)
{
    ;
    ];
    //大端内部处理
    ,c2=;
    if(bl[l1] != bl[r1])
    {
        for(int i=l1;bl[i]<L1;i++) t1[++c1]=a[i],t2[a[i]]++;
        ;i<=r1;i++) t1[++c1]=a[i],t2[a[i]]++;
    }
    ]==bl[l1] || bl[r1]==bl[r1+]) for(int i=l1;i<=r1;i++) t1[++c1]=a[i],t2[a[i]]++;
    //朴素countl1r1的小端
    if(bl[l2]!=bl[r2])
    {
        for(int i=l2;bl[i]<L2;i++) t3[++c2]=a[i],t4[a[i]]++;
        ;i<=r2;i++) t3[++c2]=a[i],t4[a[i]]++;
    }
    ]==bl[l2] || bl[r2]==bl[r2+]) for(int i=l2;i<=r2;i++) t3[++c2]=a[i],t4[a[i]]++;
    //朴素countl2r2的小端
    ;i<=c1;i++) res+=(L2<=R2 ? b[R2].a[t1[i]]-b[L2-].a[t1[i]] : ) + t4[t1[i]];
    //朴素把l1r1小端的处理辽,用大端+小端
    ;i<=c2;i++) res+=b[R1].a[t3[i]]-b[L1-].a[t3[i]];
    //朴素处理小端
    ;i<=c1;i++) t2[t1[i]]--;
    ;i<=c2;i++) t4[t3[i]]--;
    //清零
    return res;
}
int main()
{
    n=,B=sqrt(n)+;
    ;i<=n;i++)
    {
        if(b[m].c >= B) ++m;
        a[i]=in(),bl[i]=m,b[m].b[++b[m].c]=a[i];
    }
    ;i<=m;i++)
    {
        ;j<=n;j++) b[i].a[j]=b[i-].a[j];
        ;j<=b[i].c;j++) b[i].a[b[i].b[j]]++;
    }
    ;i<=m;i++) ;j<=m;j++) ;k<=b[i].c;k++) f[i][j]+=b[j].a[b[i].b[k]];//第i个块到第j个块的ans
    for(q=in();q--;)
    {
        int l1=in(),r1=in(),l2=in(),r2=in();
        cout<<work(l1,r1,l2,r2)<<endl;
    };
}

这儿,是,代码QAQ

先这样不想刚这题了,over

CFGym101138D Strange Queries 莫队/分块的更多相关文章

  1. Bzoj 3236: [Ahoi2013]作业 莫队,分块

    3236: [Ahoi2013]作业 Time Limit: 100 Sec  Memory Limit: 512 MBSubmit: 1113  Solved: 428[Submit][Status ...

  2. [BZOJ 3585] mex 【莫队+分块】

    题目链接:BZOJ - 3585 题目分析 区间mex,即区间中没有出现的最小自然数. 那么我们使用一种莫队+分块的做法,使用莫队维护当前区间的每个数字的出现次数. 然后求mex用分块,将权值分块(显 ...

  3. BZOJ_3585_mex && BZOJ_3339_Rmq Problem_莫队+分块

    BZOJ_3585_mex && BZOJ_3339_Rmq Problem_莫队+分块 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一 ...

  4. BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块

    BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块 Description Autumn和Bakser又在研究Gty的妹子序列了 ...

  5. BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块

    题目描述 输入 输出 样例输入 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 样例输出 2 2 1 1 3 2 2 1 提示 N=100000,M=1000000 ...

  6. [BZOJ3585]mex(莫队+分块)

    显然可以离线主席树,这里用莫队+分块做.分块的一个重要思想是实现修改与查询时间复杂度的均衡,这里莫队和分块互相弥补. 考虑暴力的分块做法,首先显然大于n的数直接忽略,于是将值域分成sqrt(n)份,每 ...

  7. 小Z的袜子(莫队分块)题解

    小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...

  8. 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块

    [题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫 ...

  9. 莫队+分块 BZOJ 3809

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1634  Solved: 482[Submit][Status][Di ...

随机推荐

  1. 【C++】解析C++运行环境的搭建

    在本篇文章中,笔者会谈谈如何搭建C++的运行环境.在不同操作系统中,运行C++编译器的命令也各不相同,最常用的编译器是GNU编译器(Linux系统)和微软Visual Studio编译器(Window ...

  2. 19.翻译系列:EF 6中定义自定义的约定【EF 6 Code-First约定】

    原文链接:https://www.entityframeworktutorial.net/entityframework6/custom-conventions-codefirst.aspx EF 6 ...

  3. appium 报错

    2018-11-27 18:05:56:313 - [Logcat] Logcat terminated with code 0, signal null 2018-11-27 18:05:56:31 ...

  4. mschart asp chart 用法,包括前台写法与后台写法,还有click事件,如何触发。

    纯后台动态生成aspchart ,这种方式没办法实现chart中click事件.click事件点击没有反应,用第二种可以实现点击事件. 两种方式实现同一种效果图: 第一种写法:后台动态生成aspcha ...

  5. Use Dynamic Data Masking to obfuscate your sensitive data

    Data privacy is a major concern today for any organization that manages sensitive data or personally ...

  6. svn安装教程

    svn服务器端下载(VisualSVN) 安装包,选择windows版的VisualSVN-Server https://www.visualsvn.com/downloads/ svn客户端下载(T ...

  7. h5 扫描二维码打开app和点击下载功能的实现

    window.onload = function () { jumpToapp() } var browser = { isAndroid: function () { return navigato ...

  8. cx_Oracle读写clob

    cx_Oracle读写clob 读 读到相应字段后,使用read()方法即可:例如读取到clob对象a,想要查看其内容,使用下列代码即可: a.read() 写 参考下列代码: id='123' cl ...

  9. [转]Jsoup(一)Jsoup详解(官方)

    原文地址:http://www.cnblogs.com/zhangyinhua/p/8037599.html 一.Jsoup概述 1.1.简介     jsoup 是一款Java 的HTML解析器,可 ...

  10. error $GOPATH: no library found in $GOPATH: rdkafka

    安装confluent-kafka-go出错时,请使用brew安装pkg-config,手动go get安装的pkg-config还不行... 错误提示: go get -u github.com/c ...