题面:


得分情况:
40分,写了纯暴力。


正解:
其实O(nn−−√logn)O(nnlog⁡n)O(n\sqrt{n}\log{n})的做法还挺好想的(然而我在考场上并没有想出来),分块莫队再用线段树维护块中类型的最大值即可。我们要想办法把这个lognlog⁡n\log{n}去掉。经过冷静地分析,我们发现,修改的总次数为nn−−√nnn\sqrt{n},查询的总次数为nnn,如果我们能够将前者的复杂度降为O(1)" role="presentation">O(1)O(1)O(1),后者的复杂度升为O(n−−√)O(n)O(\sqrt{n}),就可以去掉那个lognlog⁡n\log{n}了。
我们先将l和r差很小的答案暴力计算出来,将剩下的询问分块,每个块内按r排序,这样就可以保证右端只增不减,至于左端因为都在一个块内,n−−√n\sqrt{n}暴力维护即可。


代码:

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+100;
const int bs=300;
int n,m,q,a[maxn],b[maxn],blk[maxn],bl[maxn/bs+10],br[maxn/bs+10];
int ql[maxn],qr[maxn],qx[maxn],qy[maxn];
long long bmx[maxn/bs+10],tmp[maxn/bs+10],cnt[maxn],ans[maxn];
vector <int> qq[maxn];void inc(int x,int y) { cnt[x]+=y;if(cnt[x]>bmx[blk[x]]) bmx[blk[x]]=cnt[x]; }long long query(int x,int y)
{long long nowans=0;for(;x<=y&&x!=bl[blk[x]];x++) nowans=max(nowans,cnt[x]);for(;x<=y&&y!=br[blk[y]];y--) nowans=max(nowans,cnt[y]);for(;x<=y;x=br[blk[x]]+1) nowans=max(nowans,bmx[blk[x]]);return nowans;
}bool cmp(int x,int y)
{return qr[x]<qr[y];
}int main()
{scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) scanf("%d",&b[i]);for(int i=0;i<=maxn-1;i++){blk[i]=i/bs;if(!bl[i/bs]) bl[i/bs]=i;br[i/bs]=i;}for(int i=1;i<=q;i++){scanf("%d%d%d%d",&ql[i],&qr[i],&qx[i],&qy[i]);if(qr[i]-ql[i]+1<=bs){memset(bmx,0,sizeof(bmx));for(int j=ql[i];j<=qr[i];j++) inc(a[j],b[j]);ans[i]=query(qx[i],qy[i]);for(int j=ql[i];j<=qr[i];j++) cnt[a[j]]-=b[j];}else qq[blk[ql[i]]].push_back(i);}for(int i=0;i<maxn;i++){if(!qq[i].size()) continue;sort(qq[i].begin(),qq[i].end(),cmp);int last=br[i];memset(cnt,0,sizeof(cnt));memset(bmx,0,sizeof(bmx));for(int j=0;j<qq[i].size();j++){int x=qq[i][j];while(last<qr[x]){last++;inc(a[last],b[last]);}for(int k=0;k<maxn/bs+10;k++) tmp[k]=bmx[k];for(int k=ql[x];k<=br[i];k++) inc(a[k],b[k]);ans[x]=query(qx[x],qy[x]);for(int k=ql[x];k<=br[i];k++) cnt[a[k]]-=b[k];for(int k=0;k<maxn/bs+10;k++) bmx[k]=tmp[k];}}for(int i=1;i<=q;i++) printf("%lld\n",ans[i]);return 0;
}

NOI2018湖北省队集训Day4 T1 djq和MZ相关推荐

  1. NOI2018湖北省队集训Day4 T2 djq 的朋友圈

    题面: 得分情况: 35分枚举全排列暴力... 正解: 我们将直接与1相连的点称为a,不与1直接相连而与a直接相连的点称为b. 状压dp[i]表示已选的a,转移时枚举现在要选的a点,计算对答案的影响. ...

  2. FJ省队集训DAY4 T1

    直接上题解 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<cstr ...

  3. FJ省队集训DAY3 T1

    思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分. 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的 ...

  4. FJ省队集训DAY5 T1

    思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...

  5. 2017FJ省队集训 游记

    2017FJ省队集训 游记 又是一篇流水账 Day 1 今天是省队集训的第一天.早上骑车去八中,到的时候汗流太多浑身湿透被杨哥哥和runzhe2000 d了,一个说我去游泳了一个说我打球了...流完汗 ...

  6. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演,拉格朗日插值) Problem Sol ...

  7. [2018HN省队集训D8T1] 杀毒软件

    [2018HN省队集训D8T1] 杀毒软件 题意 给定一个 \(m\) 个01串的字典以及一个长度为 \(n\) 的 01? 序列. 对这个序列进行 \(q\) 次操作, 修改某个位置的字符情况以及查 ...

  8. P6271 [湖北省队互测2014]一个人的数论(莫比乌斯反演 + 伯努利数)

    P6271 [湖北省队互测2014]一个人的数论 ∑i=1nim[gcd⁡(i,n)=1]∑d∣nμ(d)dm∑i=1ndim由伯努利数可知∑i=0nim=1m+1∑i=0mCm+1iBi(n+1)m ...

  9. 湖北省专科计算机竞赛,NOI信息学竞赛2019年湖北省队名单

    CCF NOI2019湖北省省队选拔活动于2019年4月6-7日在湖北武汉华中科技大学举行,由湖北省计算机学会组织.本次选拔活动分为两试,均为机试.最终成绩按照NOIP2018提高组成绩和省队选拔成绩 ...

最新文章

  1. Android开发学习之路-环境搭建
  2. mac 下启动Android Studio 时出现 Android Studio was unable to find a valid Jvm
  3. Spring Security 入门(1-9)国际化的使用
  4. 顶级分布式开源项目,配上这款可视化工具,真香!
  5. Docker基本命令入门
  6. c语言 消除最后一个空格,新人提问:如何将输出时每行最后一个空格删除
  7. Linux内核中定义的延时函数
  8. 物联网NodeMCU刷写AT固件
  9. 合天网络靶场-大规模网络环境仿真服务平台
  10. win10家庭中文版系统配置远程桌面连接
  11. Linux: 软件包管理工具 yum/dnf 命令(Fedora/CentOS/RedHat)
  12. STRAIGHT特征提取算法学习
  13. 强化学习基础05——gym
  14. 中国分电器及点火线圈市场现状研究分析与发展前景预测报告(2022)
  15. SpringCloud微服务搭建(四 搭建EurekaServer集群)
  16. [行为识别论文详解]TSN(Temporal Segment Networks)
  17. 笑到爆,产品经理VS大堂经理
  18. 神犇营-26-最大数输出
  19. 元数据管理、治理、系统、建设方案、范例等
  20. 《旋元佑进阶文法》:第一章 基本句型

热门文章

  1. opencv4android 配置,配置OpenCV4Android开发环境
  2. 2023年电梯行业研究报告
  3. java中多态到底是什么_java中的多态是指什么
  4. Docker配置host地址
  5. 云生态大会,随“峰”而来
  6. php遍历目录图片并显示,PHP读取目录下所有图片并输出一张图片地址
  7. 江苏省普通高校软件计算机专业,江苏省普通高校“专转本”选拔考试 计算机专业大类专业综合基础理论考试大纲(14页)-原创力文档...
  8. mipi dsi csi 之间的区别
  9. 第三周项目10-小学生计算题的随机生成
  10. Android随笔随想-GUI-触摸事件分发