首先计算出以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. 题解 [CTSC2006]歌唱王国

    题目传送门 Desctiption 见题面. Solution 人类智慧... 考虑这样一个赌博游戏,现在有一个猴子,它随机从 \(1\sim n\) 中选一个打出来.现在有若干个赌徒,他们一开始都有 ...

  2. 题解 有标号DAG计数

    题目传送门 题目大意 给出\(n\),求出对于任意\(t\in[1,n]\),点数为\(t\)的弱联通\(\texttt{DAG}\)个数.答案对\(998244353\)取模. \(n\le 10^ ...

  3. bzoj1834 ZJOI2010网络扩容(费用流)

    给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用. 求: 1.在不扩容的情况下,1到N的最大流: 2.将1到N的最大流增加K所需的最小扩容费用. 其中\(n ...

  4. Golang/Java 实现无重复字符的最长子串 - LeetCode 算法

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-subs ...

  5. Java(40)网络编程

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201659.html 博客主页:https://www.cnblogs.com/testero ...

  6. ArrayList和Vector

    ArrayList和Vector ArrayList ArrayList的注意实现 1.ArrayList可以加入null,并且多个 2.ArrayList是由数组来实现数据存储的 3.ArrayLi ...

  7. springboot 事务执行全流程分析

    springboot 事务执行全流程分析 目录 springboot 事务执行全流程分析 1. 事务方法执行前的准备工作 2. 业务代码的调用 3. 事务方法执行后处理 4. 业务代码在事务和非事务中 ...

  8. django通过管理页上传图片

    1.配置目录 新建上传录.static/medis 2.设置上传文件保存路径 # setting.py中设置上传文件路径static/media MEDIA_ROOT = os.path.join(B ...

  9. MySQL:提高笔记-5

    MySQL:提高笔记-5 学完基础的语法后,进一步对 MySQL 进行学习,前几篇为: MySQL:提高笔记-1 MySQL:提高笔记-2 MySQL:提高笔记-3 MySQL:提高笔记-4 MySQ ...

  10. Nginx高效核心

    Nginx高效核心 目录 Nginx高效核心 Introduction I/O特性 同步/异步 阻塞/非阻塞 常见的I/O模型 阻塞型 非阻塞型 多路复用模型(多路阻塞) 信号驱动模型 异步模型 Ng ...