hdu 4747 Mex (2013 ACM/ICPC Asia Regional Hangzhou Online)
题目链接: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)的更多相关文章
- 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 ...
- 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 ...
- 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 ...
- (并查集)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 ...
- (二叉树)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) ...
- [2013 ACM/ICPC Asia Regional Hangzhou Online J/1010]hdu 4747 Mex (线段树)
题意: + ;];;;], seg[rt << | ]);)) * fa.setv;) * fa.setv;;], seg[rt << | ], r - l + );;, ...
- 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, ...
- 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 ...
- 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 ...
随机推荐
- 五,ESP8266 TCP服务器多连接(基于Lua脚本语言)
https://www.cnblogs.com/yangfengwu/p/7524326.html 一些时间去准备朋友的元器件了... 接着写,,争取今天写完所有的文章,,因为答应了朋友下周5之前要做 ...
- LED驱动电源
LED驱动电源 LED驱动电源,你了解多少? LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电).低压直 ...
- jquery ajax error函数和及其参数详细说明(转载)
使用jquery的ajax方法向服务器发送请求的时候,常常需要使用到error函数进行错误信息的处理,本文详细的说明了ajax中error函数和函数中各个参数的用法.一般error函数返回的参数有三个 ...
- BQMeetup
BQMeetup 时间:2017.12.19 地点:北京东城区东直门国华投资大厦1105
- 20155238 2016-2017-2《Java程序设计》课程总结
每周作业链接汇总(按顺序) 预备作业1 预备作业2 预备作业3 第一周作业 第二周作业 第三周作业 第四周作业 第五周作业 第六周作业 第七周作业 第八周作业 第九周作业 第十周作业 自认为写得最好一 ...
- POJ 3041&&3020
两道二分图的练手题. 3041:题意大概是在一个N*N的图上有K个东西,你每次可以清除一行或一列上的所有东西.让你求最少的操作次数. 我们根据题意建图.对于每一个点的坐标(x,y)之间连一条边.比如样 ...
- mybatis 初步使用(IDEA的Maven项目, 超详细)
目录 创建 Maven 项目 Maven配置 pom.xml 创建数据库 配置Mybatis 配置mybatis的XML文件 创建实体类和对应的Mapper.xml 测试 源码 @ 创建 Maven ...
- js获取浏览器对象的信息
js中有一个对象叫 navigator,navigator 对象包含有关浏览器的信息.所有的浏览器都支持该对象. 其中经常用到的是 navigator.userAgent 属性,通常,它是在 navi ...
- HTML 图像实例
61.插入图像本例演示如何在网页中显示图像.图像标签(<img>)和源属性(Src)在 HTML 中,图像由 <img> 标签定义. <img> 是空标签,意思是说 ...
- VMware下三种网络连接模式介绍
birdged(桥接) 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于 ...