[BZOJ2906]「颜色」
为什么C++ (11)-O2如此之快,直接优化1000ms...
强制在线,只能分块了。
本题应当预处理出每个块到后面几个块的每种数的平方与数量的前缀和。
由于空间限制,块长只能开到n的2/3次方,
最重要的一点,开O2!!!
Code:
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=5e4+100,M=2e4+100;
int read(){int x=0;char ch=getchar();while(ch<'0'||ch>'9')ch=getchar();while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();return x;}
int pos[N],n,m,Q,c[N],L[40],R[40],size,t;ll lans,cnt[M],tot[40][40][M],num[40][M];//num记录数量,tot记录平方。
void init()
{
for(int i=1;i<=t;i++)for(int j=1;j<=m;j++)num[i][j]+=num[i-1][j];
for(int i=1;i<=t;i++)for(int j=i;j<=t;j++)for(int k=1;k<=m;k++)tot[i][j][k]=tot[i][j][k-1]+(num[j][k]-num[i-1][k])*(num[j][k]-num[i-1][k]);
}
void getans(int l,int r,int a,int b)
{
int pl=pos[l],pr=pos[r];
lans=tot[pl+1][pr-1][b]-tot[pl+1][pr-1][a-1];
if(pl==pr)
{
for(int i=l;i<=r;i++)if(c[i]>=a&&c[i]<=b)lans+=cnt[c[i]]*2+1,cnt[c[i]]++;
for(int i=l;i<=r;i++)cnt[c[i]]=0;
}
else
{
for(int i=l;i<=R[pl];i++)
{
if(c[i]<a||c[i]>b)continue;
if(!cnt[c[i]])cnt[c[i]]=num[pr-1][c[i]]-num[pl][c[i]];
lans+=cnt[c[i]]*2+1;cnt[c[i]]++;
}
for(int i=L[pr];i<=r;i++)
{
if(c[i]<a||c[i]>b)continue;
if(!cnt[c[i]])cnt[c[i]]=num[pr-1][c[i]]-num[pl][c[i]];
lans+=cnt[c[i]]*2+1;cnt[c[i]]++;
}
for(int i=l;i<=R[pl];i++)cnt[c[i]]=0;
for(int i=L[pr];i<=r;i++)cnt[c[i]]=0;
return;
}
}
int main()
{
n=read();m=read();Q=read();
size=pow(n,2.0/3.0),t=ceil((double)n/size);
for(int i=1;i<=t;i++)L[i]=R[i-1]+1,R[i]=min(n,L[i]+size-1);
for(int i=1;i<=t;i++)for(int j=L[i];j<=R[i];j++)pos[j]=i;
for(int i=1;i<=n;i++)c[i]=read(),num[pos[i]][c[i]]++;
init();
while(Q--)
{
int l=read()^lans,r=read()^lans,a=read()^lans,b=read()^lans;
getans(l,r,a,b);
printf("%lld\n",lans);
}
}
[BZOJ2906]「颜色」的更多相关文章
- 「2014-3-11」HTTP 初步探究
网络上存在很多资源,也持续不断地生成新的资源.为了新建.获取和操作这些资源,引来了两个问题:如何定位资源,如何对他们进行操作.第一个问题引申出了 URI / URL 即 uniform resourc ...
- 「SDOI2017」树点涂色 解题报告
「SDOI2017」树点涂色 我sb的不行了 其实一开始有一个类似动态dp的想法 每个点维护到lct树上到最浅点的颜色段数,然后维护一个\(mx_{0,1}\)也就是是否用虚儿子的最大颜色 用个set ...
- LOJ #2116 Luogu P3241「HNOI2015」开店
好久没写数据结构了 来补一发 果然写的时候思路极其混乱.... LOJ #2116 Luogu P3241 题意 $ Q$次询问,求树上点的颜色在$ [L,R]$中的所有点到询问点的距离 强制在线 询 ...
- 「ZJOI2018」历史(LCT)
「ZJOI2018」历史(LCT) \(ZJOI\) 也就数据结构可做了-- 题意:给定每个点 \(access\) 次数,使轻重链切换次数最大,带修改. \(30pts:\) 挺好想的.发现切换次数 ...
- Loj #3057. 「HNOI2019」校园旅行
Loj #3057. 「HNOI2019」校园旅行 某学校的每个建筑都有一个独特的编号.一天你在校园里无聊,决定在校园内随意地漫步. 你已经在校园里呆过一段时间,对校园内每个建筑的编号非常熟悉,于是你 ...
- 「HAOI2018」染色 解题报告
「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...
- 摹客iDoc「标注」新玩法!这些细节让你爱不释手(201903-2版本更新)
哈喽小伙伴们,我们又见面啦!没错,小摹就是来告诉大家:摹客iDoc又双叒叕升级了!这次又上线了许多新玩法,在此之前,小摹先带大家温习一下iDoc以往的知识点: 攻城狮查看标注的利器 —— 标注信息智能 ...
- LOJ #2585. 「APIO2018」新家
#2585. 「APIO2018」新家 https://loj.ac/problem/2585 分析: 线段树+二分. 首先看怎样数颜色,正常的时候,离线扫一遍右端点,每次只记录最右边的点,然后查询左 ...
- 「BZOJ4763」雪辉
「BZOJ4763」天野雪辉 题目大意:有一棵 \(n\) 个点的树,树上每一个点有权值 \(a_i \leq 30000\) ,每次询问给出若干路径,求出这些路径的并上面的不同颜色数与 \(mex\ ...
随机推荐
- vmware使用U盘安装系统
创建好系统 创建一个新的硬盘,选择"physicalDrive1" 如果识别不到physicalDrive 1,使用下面的方法. 1.在本机的服务里面启用下面的服务. 2.重启 V ...
- 利用PE破解系统密码
1.利用pe制作工具制作pe启动盘或者ios镜像 2.制作好后,在虚拟机设置里面加载镜像 3. 3.开启时选择打开电源进入固件 4.开启后依次选择:Boot--->CD-ROM Drive并按F ...
- PLICP
介绍 PLICP相比较于普通ICP算法,使用点线之间的距离作为度量,最终找到一个最小化该度量的闭式解(解析解). 最优结果以平方的速度收敛.相比较于ICP,IDC,MBICP.PLICP更加准确,且需 ...
- 基于IDEA的JAVA开发[第一集]:在Linux上安装IDEA
1,因为买了荣耀的magicbook pro 锐龙版,系统是Linux,以后打算直接在Linux上开发.本来熟悉Myeclipse,下载了Myeclipse2017 for Linux,但是安装中出现 ...
- linux U盘安装系统工具usb-creator-gtk
linux平台下U盘安装linux系统的工具.它是ubuntu自带的工具,将建时将覆盖U盘中的所有内容.
- 【LeetCode】145. 二叉树的后序遍历
145. 二叉树的后序遍历 知识点:二叉树:递归:Morris遍历 题目描述 给定一个二叉树的根节点 root ,返回它的 后序 遍历. 示例 输入: [1,null,2,3] 1 \ 2 / 3 输 ...
- Dijkstra和堆优化
Dijkstra算法 由于我之前一直记的迪杰斯特拉的翻译导致我把dijkstra写成了dijstra--所以下文#define dijstra dijkstra 我以后叫她迪杰克斯歘! Dijskra ...
- 【洛谷P1962 斐波那契数列】矩阵快速幂+数学推导
来提供两个正确的做法: 斐波那契数列双倍项的做法(附加证明) 矩阵快速幂 一.双倍项做法 在偶然之中,在百度中翻到了有关于斐波那契数列的词条(传送门),那么我们可以发现一个这个规律$ \frac{F_ ...
- 对一个sql的分析
select * FROM LPEdorItem a, LCCont b, LPEdorApp c WHERE a.edoracceptno = c.edoracceptno and a.ContNo ...
- 监控实战之Prometheus
author:JevonWei 版权声明:原创作品 目录 一 背景 二 部署Prometheus Server Prometheus 主配置文件 targets 节点配置文件 rules 告警规则 运 ...