题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4747

思路:

比赛打得太菜了,不想写。。。。线段树莽一下

实现代码:

#include<iostream>
#include<cstdio>
#include<map>
#include<cmath>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mid ll m = (l + r) >> 1
#define ll long long
const ll M = 3e5+;
ll sum[M<<],maxx[M<<],lazy[M<<],a[M],mex[M],n,Next[M];
map<ll,ll>mp;
void pushup(ll rt){
sum[rt] = sum[rt<<] + sum[rt<<|];
maxx[rt] = max(maxx[rt<<] , maxx[rt<<|]);
} void pushdown(ll rt,ll m){
if(lazy[rt]!=-){
lazy[rt<<] = lazy[rt];
lazy[rt<<|] = lazy[rt];
sum[rt<<] = lazy[rt]*(m-(m>>));
sum[rt<<|] = lazy[rt]*(m>>);
maxx[rt<<] = lazy[rt];
maxx[rt<<|] = lazy[rt];
lazy[rt] = -;
}
} void build(ll l,ll r,ll rt){
sum[rt] =; maxx[rt] = ;
lazy[rt] = -;
if(l == r){
sum[rt] = mex[l];
maxx[rt] = mex[l];
return ;
}
mid;
build(lson); build(rson);
pushup(rt);
} /*void ct(ll l,ll r,ll rt){
if(l == r){
cout << maxx[rt]<<" ";
return ;
}
mid;
ct(lson);
ct(rson);
}*/ void update(ll L,ll R,ll c,ll l,ll r,ll rt){
if(L <= l&&R >= r){
lazy[rt] = c;
maxx[rt] = c;
sum[rt] = c*(r-l+);
return ;
}
pushdown(rt,r-l+);
mid;
//cout<<l<<" "<<r<<" "<<sum[1]<<endl;
if(L <= m) update(L,R,c,lson);
if(R > m) update(L,R,c,rson);
pushup(rt);
} ll query(ll p,ll l,ll r,ll rt){
if(l == r) return l;
pushdown(rt,r-l+);
mid;
//cout<<maxx[rt<<1]<<" "<<p<<endl;
if(maxx[rt<<] > p) return query(p,lson);
else return query(p,rson);
} int main()
{
while(scanf("%I64d",&n)&&n){
ll tmp = ;
mp.clear();
for(ll i = ;i <= n;i ++){
scanf("%I64d",&a[i]);
mp[a[i]] = ;
while(mp.find(tmp) != mp.end()) tmp++;
mex[i] = tmp;
}
mp.clear();
for(ll i = n;i >= ;i --){
if(mp.find(a[i]) == mp.end()) Next[i] = n + ;
else Next[i] = mp[a[i]];
mp[a[i]] = i;
}
build(,n,);
ll ans = ;
for(ll i = ;i <= n;i ++){
ans += sum[];
if(maxx[] > a[i]){
ll l = query(a[i],,n,);
ll r = Next[i];
//cout<<l<<" "<<r<<endl;
if(l < r)
update(l,r-,a[i],,n,);
}
update(i,i,,,n,);
}
printf("%I64d\n",ans);
}
return ;
}

hdu 4747 Mex (2013 ACM/ICPC Asia Regional Hangzhou Online)的更多相关文章

  1. HDU 4747 Mex(线段树)(2013 ACM/ICPC Asia Regional Hangzhou Online)

    Problem Description Mex is a function on a set of integers, which is universally used for impartial ...

  2. HDU 4745 Two Rabbits(最长回文子序列)(2013 ACM/ICPC Asia Regional Hangzhou Online)

    Description Long long ago, there lived two rabbits Tom and Jerry in the forest. On a sunny afternoon ...

  3. HDU 4744 Starloop System(最小费用最大流)(2013 ACM/ICPC Asia Regional Hangzhou Online)

    Description At the end of the 200013 th year of the Galaxy era, the war between Carbon-based lives a ...

  4. (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

    http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memo ...

  5. (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)

    http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others)  ...

  6. [2013 ACM/ICPC Asia Regional Hangzhou Online J/1010]hdu 4747 Mex (线段树)

    题意: + ;];;;], seg[rt <<  | ]);)) * fa.setv;) * fa.setv;;], seg[rt <<  | ], r - l + );;,  ...

  7. HDU 4757 Tree(可持久化字典树)(2013 ACM/ICPC Asia Regional Nanjing Online)

    Problem Description   Zero and One are good friends who always have fun with each other. This time, ...

  8. HDU 4729 An Easy Problem for Elfness(主席树)(2013 ACM/ICPC Asia Regional Chengdu Online)

    Problem Description Pfctgeorge is totally a tall rich and handsome guy. He plans to build a huge wat ...

  9. HDU 4735 Little Wish~ lyrical step~(DLX搜索)(2013 ACM/ICPC Asia Regional Chengdu Online)

    Description N children are living in a tree with exactly N nodes, on each node there lies either a b ...

随机推荐

  1. jqgrid 设置隔行换色

    有时,为美观效应,需要设置jqgrid隔行换色.jqgrid提供altRows属性来配置 启动隔行换色:altRows: true,//隔行换色 $("#filterGrid"). ...

  2. [HAOI2010]订货 BZOJ2424

    分析: 能看出来,这是一个费用流的题,建图很朴实,i连i+1,费用为存储费用,流量为仓库容量,之后S连i,费用为单价,流量为inf,之后i连T,流量为a[i],费用为0,之后裸上费用流... 附上代码 ...

  3. 20155328 《网络攻防》 实验一:PC平台逆向破解(5)M

    20155328 <网络攻防> 实验一:PC平台逆向破解(5)M 实践目标 实践对象:linux可执行文件pwn1. 正常执行时,main调用foo函数,foo函数会简单回显任何用户输入的 ...

  4. 【源码】进入ASP.NET MVC流程的大门 - UrlRoutingModule

    UrlRoutingModule的功能 在ASP.NET MVC的请求过程中,UrlRoutingModule的作用是拦截当前的请求URL,通过URL来解析出RouteData,为后续的一系列流程提供 ...

  5. shellcode 初次使用笔记

    winXP SP3 环境 (xp环境默认没开启栈不可执行机制,比较方便破解,如果已开启了,请自行百度如何关闭) dig.exe 目标文件 x86dbg调试工具 python 环境 打开准备好的目标软件 ...

  6. 软件测试--w模型

    W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...

  7. 【转】Cocos2d-x 3.x基础学习: 总结数学类Vec2/Size/Rect

    转载:http://www.taikr.com/article/1847 在Cocos2d-x 3.x中,数学类Vec2.Size.Rect,是比较常用的类.比如设置图片位置,图片大小,两图片的碰撞检 ...

  8. 详细聊聊k8s deployment的滚动更新(二)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍:   livenessProbe:存活性探测.判断pod是否已经停止   readinessProbe:就绪 ...

  9. PAT甲题题解-1105. Spiral Matrix (25)-(模拟顺时针矩阵)

    题意:给定N,以及N个数.找出满足m*n=N且m>=n且m-n最小的m.n值,建立大小为m*n矩阵,将N个数从大到下顺时针填入矩阵中. #include <iostream> #in ...

  10. SQL Sever——远程过程调用失败(0x800706be)

    最近重装了系统,VS和SQL Sever莫名奇妙的不能用了.下面总结一下这个过程中遇到的问题,跟大家分享一下经验~~ 大概是以前的安装过程都十分顺利,这次,在尝试了数次登陆不上去之后,我仍然怀疑是自己 ...