为什么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]「颜色」的更多相关文章

  1. 「2014-3-11」HTTP 初步探究

    网络上存在很多资源,也持续不断地生成新的资源.为了新建.获取和操作这些资源,引来了两个问题:如何定位资源,如何对他们进行操作.第一个问题引申出了 URI / URL 即 uniform resourc ...

  2. 「SDOI2017」树点涂色 解题报告

    「SDOI2017」树点涂色 我sb的不行了 其实一开始有一个类似动态dp的想法 每个点维护到lct树上到最浅点的颜色段数,然后维护一个\(mx_{0,1}\)也就是是否用虚儿子的最大颜色 用个set ...

  3. LOJ #2116 Luogu P3241「HNOI2015」开店

    好久没写数据结构了 来补一发 果然写的时候思路极其混乱.... LOJ #2116 Luogu P3241 题意 $ Q$次询问,求树上点的颜色在$ [L,R]$中的所有点到询问点的距离 强制在线 询 ...

  4. 「ZJOI2018」历史(LCT)

    「ZJOI2018」历史(LCT) \(ZJOI\) 也就数据结构可做了-- 题意:给定每个点 \(access\) 次数,使轻重链切换次数最大,带修改. \(30pts:\) 挺好想的.发现切换次数 ...

  5. Loj #3057. 「HNOI2019」校园旅行

    Loj #3057. 「HNOI2019」校园旅行 某学校的每个建筑都有一个独特的编号.一天你在校园里无聊,决定在校园内随意地漫步. 你已经在校园里呆过一段时间,对校园内每个建筑的编号非常熟悉,于是你 ...

  6. 「HAOI2018」染色 解题报告

    「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...

  7. 摹客iDoc「标注」新玩法!这些细节让你爱不释手(201903-2版本更新)

    哈喽小伙伴们,我们又见面啦!没错,小摹就是来告诉大家:摹客iDoc又双叒叕升级了!这次又上线了许多新玩法,在此之前,小摹先带大家温习一下iDoc以往的知识点: 攻城狮查看标注的利器 —— 标注信息智能 ...

  8. LOJ #2585. 「APIO2018」新家

    #2585. 「APIO2018」新家 https://loj.ac/problem/2585 分析: 线段树+二分. 首先看怎样数颜色,正常的时候,离线扫一遍右端点,每次只记录最右边的点,然后查询左 ...

  9. 「BZOJ4763」雪辉

    「BZOJ4763」天野雪辉 题目大意:有一棵 \(n\) 个点的树,树上每一个点有权值 \(a_i \leq 30000\) ,每次询问给出若干路径,求出这些路径的并上面的不同颜色数与 \(mex\ ...

随机推荐

  1. FreeRTOS+LVGL|Freertos+lvgl如何配置lvgl的心跳和任务管理器

    目录 配置lvgl心跳(Tick) 配置lvgl任务管理器(Task Handler) LVGL中文手册 lvgl需要系统滴答声(心跳)才能知道动画和其他任务的经过时间,所以我们必须要配置好lvgl的 ...

  2. C语言:读写TXT

    fopen() 改为: if((fp=fopen("1s.txt","w+"))==NULL) fputc(p,fp); 改为:fprintf(fp," ...

  3. web系统国际化思路

    需求:php开发多个中文系统支持国际化 思路: 提炼各个系统中的中文字符,替换为资源key. 多媒体文件中的中文定位(图片中的中文,中文录音,中文视频,中文模板等). 统一翻译文字.准备资源文件. 各 ...

  4. 前端小技巧:css sprite----V客学院技术分享

    前端小技巧:css sprite 因为英文名叫sprite,翻译过来是精灵,而雪碧饮料也叫sprite,所以叫精灵兔或者雪碧图. 它有什么作用呢? 当用户在浏览器里输入一个URL地址的时候,你会感觉无 ...

  5. Scrapy 爬虫框架学习笔记(未完,持续更新)

    Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ...

  6. PAT乙级:1061 判断题 (15分)

    PAT乙级:1061 判断题 (15分) 题干 判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 ...

  7. IBM java开发面试题

    1.commite在什么场合使用 svn 提交项目 数据库自动提交  Oracle手动,mysql自动 2.void(0)怎么使用 html界面 <a href="javaScript ...

  8. netty系列之:netty中的Channel详解

    目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的Ch ...

  9. SQL语句(五)子查询

    目录 一.子查询含义 二.子查询分类 按子查询的位置分 按结果集的行列数不同分 三.WHERE后面的子查询 1. 标量子查询 2. 列子查询(多行子查询) 3. 行子查询(结果为一行多列或多行多列) ...

  10. shell的编程规范和变量

    目录 一.Shell脚本概述 1.shell脚本的概念 2.shell脚本应用场景 3.shell的作用--命令翻译器,"翻译官" 二.用户的登录shell 三.shell脚本的构 ...