Description

可怜有一个长度为n的正整数序列Ai,其中相同的正整数代表着相同的颜色。
现在可怜觉得这个序列太长了,于是她决定选择一些颜色把这些颜色的所有位置都删去。
删除颜色i可以定义为把所有满足Aj=i的位置j都从序列中删去。
然而有些时候删去之后,整个序列变成了好几段,可怜不喜欢这样,于是她想要知道有多
少种删去颜色的方案使得最后剩下来的序列非空且连续。
例如颜色序列{1,2,3,4,5},删除颜色3后序列变成了{1,2}和{4,5}两段,不满足条件。
而删除颜色1后序列变成了{2,3,4,5},满足条件。
两个方案不同当且仅当至少存在一个颜色i只在其中一个方案中被删去 。

Input

第一行输入一个整数T表示数据组数。
每组数据第一行输入一个整数n表示数列长度。
第二行输入n个整数描述颜色序列。
1 ≤ T, ∑ n ≤ 3 × 10^5, 1 ≤ Ai ≤ n

Output

对于每组数据输出一个整数表示答案
对每种颜色,只能全选或全不选,将区间[L,R]看作平面上的点(L,R),则限制条件是矩形内的点不能选,可以用线段树维护扫描线进行统计。
#include<bits/stdc++.h>
char buf[],*ptr=buf;
int _(){
int x=;
while(*ptr<)++ptr;
while(*ptr>)x=x*+*ptr++-;
return x;
}
const int N=3e5+;
int T,n;
int a[N],pe[N],pb[N],pv[N],nx[N];
long long ans;
int min(int a,int b){return a<b?a:b;}
int _l,_r,_a;
struct node{
node*lc,*rc;
int L,R,M;
int mn,mt,a;
void add(int x){
mn+=x,a+=x;
}
void dn(){
if(a){
lc->add(a);
rc->add(a);
a=;
}
}
void up(){
mn=min(lc->mn,rc->mn);
mt=(mn==lc->mn?lc->mt:)+(mn==rc->mn?rc->mt:);
}
void add(){
if(_l<=L&&R<=_r)return add(_a);
dn();
if(_l<=M)lc->add();
if(_r>M)rc->add();
up();
}
int c0(){
return mn?:mt;
}
}ns[N*],*np,*rt;
node*build(int L,int R){
node*w=np++;
w->L=L,w->R=R;
w->mn=w->a=w->M=;
w->mt=R-L+;
if(L<R){
int M=w->M=L+R>>;
w->lc=build(L,M);
w->rc=build(M+,R);
}
return w;
}
void add(int l,int r,int a){
_l=l,_r=r,_a=a;
if(l<=r)rt->add();
}
int main(){
fread(buf,,sizeof(buf),stdin);
for(T=_();T;--T){
n=_();ans=;
np=ns;
rt=build(,n);
for(int i=;i<=n;++i)a[i]=_(),pe[i]=,pb[i]=n+;
for(int i=,x;i<=n;++i)x=a[i],pv[i]=pe[x],pe[x]=i;
for(int i=n,x;i>=;--i)x=a[i],nx[i]=pb[x],pb[x]=i;
add(,n,);
for(int i=n,x;i;--i){
x=a[i];
add(i+,nx[i]-,);
if(i==pb[x])add(pe[x],n,-);
ans+=rt->c0();
}
printf("%lld\n",ans);
}
return ;
}

bzoj5011: [Jx2017]颜色的更多相关文章

  1. [BZOJ5011][JXOI2017]颜色

    5011: [Jx2017]颜色 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 84  Solved: 46[Submit][Status][Disc ...

  2. BZOJ5011 JXOI2017颜色(主席树)

    相当于求满足在子段中出现的颜色只在该子段中出现的非空子段数量.这也就相当于其中出现的颜色最左出现的位置在左端点右侧,最右出现的位置在右端点左侧.那么若固定某个端点,仅考虑对该端点的限制,会有一段合法区 ...

  3. BZOJ5011 [JXOI2017]颜色 【线段树 + 主席树】

    题目链接 BZOJ5011 题解 一定只有我这种智障会用这么奇怪的方法做这道题.. 由题我们知道最后剩余的一定是一个区间,而且区间内的颜色不存在于区间外 所以我们的目的就是为了找到这样的区间的数量 区 ...

  4. AHOI2018训练日程(3.10~4.12)

    (总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) ...

  5. BZOJ5011 & 洛谷4065 & LOJ2275:[JXOI2017]颜色——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5011 https://www.luogu.org/problemnew/show/P4065 ht ...

  6. 用神奇的currentColor制作简洁的颜色动画效果

    先上一个兼容性总结图:老版本ie可以直接用复杂方法了,套用某表情包的话:  2016年了,做前端你还考虑兼容IE6?你这简直是自暴自弃! 好了,知道了兼容性,我们可以放心的使用了. 在CSS3中扩展了 ...

  7. HTML5轻松实现搜索框提示文字点击消失---及placeholder颜色的设置

    在做搜索框的时候无意间发现html5的input里有个placeholder属性能轻松实现提示文字点击消失功能,之前还傻傻的在用js来实现类似功能... 示例 <form action=&quo ...

  8. 深入理解CSS六种颜色模式

    前面的话 赏心悦目的颜色搭配让人感到舒服,修改元素颜色的功能让人趋之若鹜.但颜色规划不当,会让网站用户无所适从.颜色从<font color="">发展至今,保留了很多 ...

  9. EasyPR--开发详解(5)颜色定位与偏斜扭转

    本篇文章介绍EasyPR里新的定位功能:颜色定位与偏斜扭正.希望这篇文档可以帮助开发者与使用者更好的理解EasyPR的设计思想. 让我们先看一下示例图片,这幅图片中的车牌通过颜色的定位法进行定位并从偏 ...

随机推荐

  1. test-ipv6

    http://test-ipv6.com/ ! 你的公网 IPv4 地址是 89.42.31.211! 你的公网 IPv6 地址是 2001:ac8:21:8::376e:989b! 你已接入 IPv ...

  2. pycharm远程调试配置

    目录: 安装pycharm 配置pycharm远程调试 使用测试 一.安装pycharm(略) 二.配置pycharm远程调试 1.菜单--->Tools--->Deployment--- ...

  3. centos Cannot allocate memory for the buffer pool

    mysql 无法启动 ,查看日志: --01T15::.401599Z [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. P ...

  4. centos配置apache的https服务

    因为公司要开发微信小程序,由于小程序比较特殊,需要https服务,所以就研究了下apache的https服务了,大致过程如下: 1.向证书机构申请https证书,会得到证书和私钥 2.安装apache ...

  5. UWA 转载

    性能优化,进无止境-内存篇 https://blog.uwa4d.com/archives/optimzation_memory_1.html https://blog.uwa4d.com/archi ...

  6. MySQL插入,更新,删除数据

    插入 单行插入 1.insert into 表名 values(col1_value,col2_value,...); 每个列必须提供一个值,如果没有值,要提供NULL值 每个列必须与它在表中定义的次 ...

  7. 详解Linux查看实时网卡流量的几种方式(转)

    转自https://www.jb51.net/article/112965.htm 假如Keepalived有10个VIP,怎么查看每个VIP的流量呢? 这里就可以使用sar命令查看网卡流量了.前提是 ...

  8. pip in windows

    G:\Python35-32\Scripts>pip install FlaskFatal error in launcher: Unable to create process using ' ...

  9. removing-guest-session-at-login-in-ubuntu-14-04

    http://askubuntu.com/questions/451526/removing-guest-session-at-login-in-ubuntu-14-04

  10. JFrame背景色设置

    JFrame对象本身是包含Pane的,一般我们在往JFrame中添加组件时,都加在了ContentPane中,这个可以通过JFrame的成员方法getContentPane()取出来.所以如果设置JF ...