CFGym101138D Strange Queries 莫队/分块
正解:莫队/分块
解题报告:
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 莫队/分块的更多相关文章
- Bzoj 3236: [Ahoi2013]作业 莫队,分块
3236: [Ahoi2013]作业 Time Limit: 100 Sec Memory Limit: 512 MBSubmit: 1113 Solved: 428[Submit][Status ...
- [BZOJ 3585] mex 【莫队+分块】
题目链接:BZOJ - 3585 题目分析 区间mex,即区间中没有出现的最小自然数. 那么我们使用一种莫队+分块的做法,使用莫队维护当前区间的每个数字的出现次数. 然后求mex用分块,将权值分块(显 ...
- BZOJ_3585_mex && BZOJ_3339_Rmq Problem_莫队+分块
BZOJ_3585_mex && BZOJ_3339_Rmq Problem_莫队+分块 Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一 ...
- BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块
BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块 Description Autumn和Bakser又在研究Gty的妹子序列了 ...
- 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 ...
- [BZOJ3585]mex(莫队+分块)
显然可以离线主席树,这里用莫队+分块做.分块的一个重要思想是实现修改与查询时间复杂度的均衡,这里莫队和分块互相弥补. 考虑暴力的分块做法,首先显然大于n的数直接忽略,于是将值域分成sqrt(n)份,每 ...
- 小Z的袜子(莫队分块)题解
小Z的袜子(hose) 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块
[题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫 ...
- 莫队+分块 BZOJ 3809
3809: Gty的二逼妹子序列 Time Limit: 80 Sec Memory Limit: 28 MBSubmit: 1634 Solved: 482[Submit][Status][Di ...
随机推荐
- Effective Java 第三版——66. 明智谨慎地使用本地方法
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- Python操作redis学习系列之(集合)set,redis set详解 (六)
# -*- coding: utf-8 -*- import redis r = redis.Redis(host=") 1. Sadd 命令将一个或多个成员元素加入到集合中,已经存在于集合 ...
- Atitit 热烈庆祝读经器项目圆满完成
Atitit 热烈庆祝读经器项目圆满完成 1.1. 读经器项目简单介绍 1 1.2. 一万小时定律和十年一个专家定律 1 1.3. 获得加持前景 1 1.4. 核心源码 1 1.5. 项目git 2 ...
- 网页调启用qq对话聊天客服窗口的链接地址方法大全(包含移动端)
z转自: http://www.wazhuti.com/1781.html 在PC端,腾讯的QQ软件还是应用最为广泛的即时通讯工具了,除了网站自动的一些对话软件外,qq可以有效的将用户留存下来, ...
- 优化实现Mobile/Bumped Diffuse
在上一篇帖子的基础上增加一张法线贴图即可: Shader "James/Scene/Bumped_Diffuse" { Properties { _MainTex ("B ...
- IntelliJ IDEA(2018)安装和破解
IDEA 全称 IntelliJ IDEA,是Java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.各类版本工具( ...
- Rk3288 双屏异显单触摸
系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...
- SQL in、not in、exists和not exists的区别:
来自:http://blog.sina.com.cn/s/blog_8a0c4f130100zaw2.html 先谈谈in和exists的区别: exists:存在,后面一般都是子查询,当子查询返回行 ...
- Javascript 运行上下文和作用域链
一.作用域Scope和上下文Context 在javascript中,作用域scope和上下文context是两个不同的概念.每个函数调用都会伴随着scope和context,从本质上来说,scope ...
- Qt编写自定义控件7-自定义可拖动多边形
前言 自定义可拖动多边形控件,原创作者是赵彦博(QQ:408815041 zyb920@hotmail.com),创作之初主要是为了能够在视频区域内用户自定义可拖动的多个区域,即可用来作为警戒区域,也 ...