AC日记——【模板】分块/带修改莫队(数颜色) 洛谷 P1903
思路:
带修改莫队;
(伏地膜xxy);
代码:
- #include <bits/stdc++.h>
- using namespace std;
- #define maxn 1000005
- #define maxnum 1000005
- int bel[maxn],blo;
- struct QueryType {
- int l,r,k,id;
- bool operator<(const QueryType pos)const
- {
- if(bel[l]==bel[pos.l])
- {
- if(bel[r]==bel[pos.r]) return k<pos.k;
- else return bel[r]<bel[pos.r];
- }
- else return bel[l]<bel[pos.l];
- }
- };
- struct QueryType qu[maxn];
- int n,m,ai[maxn],now,num[maxnum],ans[maxn];
- int ch[maxn],to[maxn],back[maxn],cntq,cntc;
- int l=,r,k;
- inline void in(int &now)
- {
- char Cget=getchar();now=;
- while(Cget>''||Cget<'') Cget=getchar();
- while(Cget>=''&&Cget<='')
- {
- now=now*+Cget-'';
- Cget=getchar();
- }
- }
- inline void updatak(int x,bool di)
- {
- if(di)
- {
- back[x]=ai[to[x]];
- ai[to[x]]=ch[x];
- if(to[x]<=r&&to[x]>=l)
- {
- num[back[x]]--;
- if(!num[back[x]]) now--;
- num[ch[x]]++;
- if(num[ch[x]]==) now++;
- }
- }
- else
- {
- ai[to[x]]=back[x];
- if(to[x]<=r&&to[x]>=l)
- {
- num[ch[x]]--;
- if(!num[ch[x]]) now--;
- num[back[x]]++;
- if(num[back[x]]==) now++;
- }
- }
- }
- inline void updata(int x,bool di)
- {
- x=ai[x];
- if(di)
- {
- if(!num[x])now++;
- num[x]++;
- }
- else
- {
- if(num[x]==)now--;
- num[x]--;
- }
- }
- int main()
- {
- in(n),in(m),blo=sqrt(n);
- for(int i=;i<=n;i++) in(ai[i]),bel[i]=(i-)/blo;
- char op[];
- for(int i=;i<=m;i++)
- {
- scanf("%s",op);
- if(op[]=='Q')
- {
- in(qu[++cntq].l);
- in(qu[cntq].r);
- if(qu[cntq].l>qu[cntq].r)
- {
- swap(qu[cntq].l,qu[cntq].r);
- }
- qu[cntq].id=cntq;
- qu[cntq].k=cntc;
- }
- else in(to[++cntc]),in(ch[cntc]);
- }
- sort(qu+,qu+cntq+);
- for(int i=;i<=cntq;i++)
- {
- while(k<qu[i].k) updatak(++k,true);
- while(k>qu[i].k) updatak(k--,false);
- while(r<qu[i].r) updata(++r,true);
- while(r>qu[i].r) updata(r--,false);
- while(l<qu[i].l) updata(l++,false);
- while(l>qu[i].l) updata(--l,true);
- ans[qu[i].id]=now;
- }
- for(int i=;i<=cntq;i++) printf("%d\n",ans[i]);
- return ;
- }
AC日记——【模板】分块/带修改莫队(数颜色) 洛谷 P1903的更多相关文章
- 莫队 [洛谷2709] 小B的询问[洛谷1903]【模板】分块/带修改莫队(数颜色)
莫队--------一个优雅的暴力 莫队是一个可以在O(n√n)内求出绝大部分无修改的离线的区间问题的答案(只要问题满足转移是O(1)的)即你已知区间[l,r]的解,能在O(1)的时间内求出[l-1, ...
- 【BZOJ】4129: Haruna’s Breakfast 树分块+带修改莫队算法
[题意]给定n个节点的树,每个节点有一个数字ai,m次操作:修改一个节点的数字,或询问一条树链的数字集合的mex值.n,m<=5*10^4,0<=ai<=10^9. [算法]树分块+ ...
- 【BZOJ】3052: [wc2013]糖果公园 树分块+带修改莫队算法
[题目]#58. [WC2013]糖果公园 [题意]给定n个点的树,m种糖果,每个点有糖果ci.给定n个数wi和m个数vi,第i颗糖果第j次品尝的价值是v(i)*w(j).q次询问一条链上每个点价值的 ...
- 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)
试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...
- P1903 【模板】分块/带修改莫队(数颜色)
题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...
- 洛谷 P1903 【模板】分块/带修改莫队(数颜色)
题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...
- luogu1903 【模板】分块/带修改莫队(数颜色)
莫队算法模板 推荐阅读这篇博客 #include <algorithm> #include <iostream> #include <cstdio> #includ ...
- BZOJ.2453.维护队列([模板]带修改莫队)
题目链接 带修改莫队: 普通莫队的扩展,依旧从[l,r,t]怎么转移到[l+1,r,t],[l,r+1,t],[l,r,t+1]去考虑 对于当前所在的区间维护一个vis[l~r]=1,在修改值时根据是 ...
- BZOJ2120 数颜色(带修改莫队)
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...
随机推荐
- ACE线程管理机制-面向对象的线程类ACE_Task
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/05/583231.html 我们在前一章中使用ACE_Thread包装时,你一定已经注意到了一 ...
- 访问修饰符public,private,protected和default的区别?
类的成员不写访问修饰符默认为default,默认对于同一个包的其他类相当于公开(public),对于不是同一个包的其他类相当于私有(private). 受保护(protected)对子类相当于公开,对 ...
- HDU1394 逆序数
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- php 获取周几
date("l"); //date就可以获取英文的星期比如Sunday date("w"); //这个可以获取数字星期比如123,注意0是星期日 获取中文星期几 ...
- Tomcat 映射虚拟目录和程序热部署
虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下创建一个xml文件,任意文件名都可以,但是此文件名是web应用发布后的虚拟目录: 比如创建一个 ...
- Spring @Async的异常处理
楼主在前面的2篇文章中,分别介绍了Java子线程中通用的异常处理,以及Spring web应用中的异常处理.链接如下: Java子线程中的异常处理(通用) Spring web引用中的异常处理 今天, ...
- PAT (Advanced level) 1003. Emergency (25) Dijkstra
As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...
- Maven -- 将引用的本地jar文件打进war包里
我们在做maven项目开发中有时候引用了本地第三方包,例如: <dependency> <groupId>org.artofsolving.jodconverter</g ...
- 【BZOJ】1031 [JSOI2007]字符加密Cipher
[算法]后缀数组 [题解]把数组复制一遍然后SA处理即可. 后缀数组 #include<cstdio> #include<algorithm> #include<cstr ...
- Python第三方库wordcloud(词云)快速入门与进阶
前言: 笔主开发环境:Python3+Windows 推荐初学者使用Anaconda来搭建Python环境,这样很方便而且能提高学习速度与效率. 简介: wordcloud是Python中的一个小巧的 ...