首先计算出以1为左端点的所有区间的mex,考虑删除左端点仍然维护这个序列:设当前删除点下一次出现在y,y~n的mex不变,从左端点到y的点中大于删除值的点要变成删除值,因为这个是不断递增的,所以是一段区间,可以用线段树来维护。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 #define L (k<<1)
5 #define R (L+1)
6 #define mid (l+r>>1)
7 int n,a[N],fi[N],nex[N],laz[N<<2],ma[N<<2],vis[N];
8 long long ans,f[N<<2];
9 void update(int k,int l,int r,int x){
10 laz[k]=ma[k]=x;
11 f[k]=x*(r-l+1);
12 }
13 void down(int k,int l,int r){
14 if (laz[k]==-1)return;
15 update(L,l,mid,laz[k]);
16 update(R,mid+1,r,laz[k]);
17 laz[k]=-1;
18 }
19 void up(int k){
20 f[k]=f[L]+f[R];
21 ma[k]=max(ma[L],ma[R]);
22 }
23 void update(int k,int l,int r,int x,int y,int z){
24 if ((l>y)||(x>r))return;
25 if ((x<=l)&&(r<=y)){
26 update(k,l,r,z);
27 return;
28 }
29 down(k,l,r);
30 update(L,l,mid,x,y,z);
31 update(R,mid+1,r,x,y,z);
32 up(k);
33 }
34 int query(int k,int l,int r,int x){
35 if (l==r)return l+(ma[k]<x);
36 down(k,l,r);
37 if (ma[L]>x)return query(L,l,mid,x);
38 return query(R,mid+1,r,x);
39 }
40 int main(){
41 while (scanf("%d",&n)!=EOF){
42 if (!n)return 0;
43 ans=0;
44 for(int i=1;i<=n;i++){
45 scanf("%d",&a[i]);
46 if (a[i]>n)a[i]=n;
47 }
48 memset(vis,0,sizeof(vis));
49 for(int i=0;i<=n;i++)fi[i]=n+1;
50 memset(laz,-1,sizeof(laz));
51 for(int i=n;i;i--){
52 nex[i]=fi[a[i]];
53 fi[a[i]]=i;
54 }
55 for(int i=1,j=0;i<=n;i++){
56 vis[a[i]]=1;
57 while (vis[j])j++;
58 update(1,1,n,i,i,j);
59 }
60 for(int i=1;i<n;i++){
61 ans+=f[1]+i-1;
62 update(1,1,n,i,i,-1);
63 update(1,1,n,query(1,1,n,a[i]),nex[i]-1,a[i]);
64 }
65 printf("%lld\n",ans+(a[n]==0));
66 }
67 }

[hdu4747]Mex的更多相关文章

  1. hdu4747——Mex

    1.题目大意:对一个序列的每一个区间求Mex,最后所有的mex相加(mex就是SG的那个),力求nlogn... 2.分析:最近开始刷线段树了,还是有很多不会啊 首先把1-1 1-2 1-- 1-n这 ...

  2. HDU-4747 Mex(线段树区间更新)

    题目大意:给一个长度为n的整数序列,定义mex(i,j)表示区间[i,j]中没有出现过的最小非负整数,求sigma(mex(i,j)),即序列中所有连续非空子区间的mex之和. 题目分析: answe ...

  3. HDU-4747 Mex 线段树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747 题意:求一个数列中,所有mex(L,R)的和. 注意到mex是单调不降的,那么首先预处理出mex ...

  4. [置顶] hdu4747 Mex 线段树

    题意:给你一个序列,让你求出对于所有区间<i, j>的mex和,mex表示该区间没有出现过的最小的整数. 思路:从时限和点数就可以看出是线段树,并且我们可以枚举左端点i, 然后求出所有左端 ...

  5. HDU4747:Mex(线段树区间修改)

    传送门 题意: 给出\(n\)个数,然后求\(\sum_{i=1}^n\sum_{j=i}^nmex(i,j)\).\(mex(i,j)\)表示区间\([i,j]\)的\(mex\). 思路: 考虑枚 ...

  6. Codeforces Round #381 (Div. 2)C. Alyona and mex(思维)

    C. Alyona and mex Problem Description: Alyona's mother wants to present an array of n non-negative i ...

  7. Codeforces 740C. Alyona and mex 思路模拟

    C. Alyona and mex time limit per test: 2 seconds memory limit per test: 256 megabytes input: standar ...

  8. bzoj3339 rmq problem (range mex query)

    给一个长度为n的数列a,q个询问,每次询问一段区间的mex.(没有出现过的最小非负整数) 1<=n,q<=200000,0<=ai<=200000. 题解1 莫队 我们将权值分 ...

  9. 转:在VS2010下编译、调试和生成mex文件

    最近帮人调了一个程序,是网上公开的代码,利用matlab与c++混合编程做三维模型关键点检测,发现他们可以用VS2010编译.调试.生成mexw32文件,因此觉得之前在Matlab上利用mex命令真是 ...

随机推荐

  1. IO之字符流

    什么是字符流 对于文本文件(.txt .java .c .cpp) 使用字符流处理 注意点 读入的文件一定要存在 否则就会报FileNotFoundException 异常的处理 为了保证流资源 一定 ...

  2. 从零入门 Serverless | SAE 的极致应用部署效率

    作者 | 文俊 阿里巴巴云原生团队 本文整理自<Serverless 技术公开课>,"Serverless"公众号后台回复"入门",即可获取系列文章 ...

  3. The Data Way Vol.1|风口下的开源市场:如何看待开源与商业的关系?

    关于「The Data Way」 「The Data Way」是由 SphereEx 公司出品的一档播客节目.这里有开源.数据.技术的故事,同时我们关注开发者的工作日常,也讨论开发者的生活日常:我们聚 ...

  4. Java基础之(三):IDEA的安装及破解

    IDEA的安装 IDEA官网:IDEA 点击IJ 找好操作系统,点击下载 双击打开,自己找个安装路径 勾选这两个即可 旗舰版破解及汉化 上面是个人社区版,是免费的,但是如果想要使用汉化版的,需要寻找插 ...

  5. Johnson 全源最短路径算法学习笔记

    Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...

  6. Dapr-简介及环境搭建

    一.Dapr是什么? Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架. 在 ...

  7. FastAPI 学习之路(三十七)元数据和文档 URL

    你可以在 FastAPI 应用中自定义几个元数据配置. 你可以设定: Title:在 OpenAPI 和自动 API 文档用户界面中作为 API 的标题/名称使用. Description:在 Ope ...

  8. 【Java虚拟机3】类加载器

    前言 Java虚拟机设计团队有意把类加载阶段中的"通过一个类的全限定名来获取描述该类的二进制字节流"这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类. ...

  9. Wireshark 过滤器的使用

    符号 例子 = = tcp.port = = 80 过滤出来TCP包含80端口的数据包 != ip.src != 127.0.0.1 ip的原地址不是127.0.0.1过滤出来 > lp.len ...

  10. [软工顶级理解组] 团队规划和任务拆解(Beta)

    目录 需求再分析 功能增减 管理改进 任务分解 人员管理 需求再分析 在Alpha阶段,我们的产品得到了用户的广泛好评,但是还是存在一些问题. 登录不稳定,登录速度慢等问题:这是北航VPN本身的不稳定 ...