[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\ ...
随机推荐
- Java 内存泄漏知多少?
先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员.我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 面试的时候内存管理是不是很多面 ...
- Adaptive AUTOSAR 学习笔记 5 - 架构 - 物理视图
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
selenium操作chrome浏览器需要有ChromeDriver驱动来协助.webdriver中关浏览器关闭有两个方法,一个叫quit,一个叫close. 1 /** 2 * Close the ...
- Django基础-01篇
一.Django介绍 flask,FastApi是轻量级服务端开发框架 Django是重量级服务端开发框架 ORM:封装了数据库操作 form:校验请求数据 安装Django: pip install ...
- 如何使用powershell操作json对象
读取Json文件 $dataTransformerDirPath为读取Json文件的目录 点击查看代码 # 读取文件 UTF8-NOBOM function ReadFile($path) { ret ...
- 重拾javaweb(假期后第一次web测试)
上学期通过十六周的时间,完成了javaweb的项目实践,其中包括很多次的练习以及测试.寒假时间大多用来挥霍,并没有对这些知识进行复习以及进一步的学习,所以在这场考试中,最终以八分的可怜成绩收尾,实在过 ...
- 微信小程序云开发-云存储-使用云开发控制台存储文件
一.存储 进入[云开发控制台]>点击[存储].将需要存储的文件通过[上传文件]方式上传上去.或者通过拖拽的方式上传文件. 二.存储文件的类型 可以存储的文件有很多,常见的文件类型包括:word ...
- [考试总结]noip模拟14
咕掉了好长时间,现在终于回来了.. 这次考试炸裂得很完蛋,直接分数上天. \(T1\) 本来想打一个记忆化搜索,然而老是通过不了样例,然后就挂了,只剩下了垃圾的 \(30pts\) 部分分数. 然而到 ...
- fastjson 1.2.24 反序列化导致任意命令执行漏洞
漏洞检测 区分 Fastjson 和 Jackson {"name":"S","age":21} 和 {"name":& ...
- 🔥 LeetCode 热题 HOT 100(41-50)
102. 二叉树的层序遍历 思路:使用队列. /** * Definition for a binary tree node. * public class TreeNode { * int val; ...