题目链接

  容易发现值为x的点只可能从值为x-1的点转移过来,所以我们把原序列连成一棵树,dfs序就是原序列的一种形式。

  就可以直接求啦

  

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cctype>
#define maxn 200000
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} struct Edge{
int next,to;
}edge[maxn];
int head[maxn],num;
inline void add(int from,int to){
edge[++num]=(Edge){head[from],to};
head[from]=num;
} int s[maxn];
int dfn[maxn],ID=-;
int d[maxn];
int q[maxn]; void dfs(int x){
dfn[x]=++ID;
for(int i=head[x];i;i=edge[i].next){
int to=edge[i].to;
dfs(to);
}
} int calc(int lim,int n){
int now=upper_bound(d+,d+n+,lim)-d;
d[now]=min(d[now],lim);
return now;
} int main(){
memset(d,,sizeof(d));
int n=read();
for(int i=;i<=n;++i){
int x=read();
add(s[x-],i);
s[x]=i;
}
dfs();
long long ans=;
for(int i=n;i>=;--i) ans+=calc(dfn[i],n);
printf("%lld\n",ans);
return ;
}

最新文章

  1. IOS实现动画的几种简单方法
  2. D FFF团的怒火
  3. CSS选择符类型
  4. mysql的登录密码带特殊符号登录不进去的问题
  5. OpenJudge 2775 文件结构“图”/ Poj 1057 FILE MAPPING
  6. WebLogic Server的单点登陆功能--转载
  7. 圆形头像以及一些常见需求形状自定义ImageView组件
  8. hdu-oj 1874 畅通工程续
  9. jQuery选择器---层次选择器总结
  10. UIButton和UIimageView
  11. javax顶层接口分析
  12. Git常用命令(二)------ 远程库操作
  13. 使用BBED跳过归档进行恢复
  14. MongoDB用户配置
  15. arcgis for android apk太大
  16. mysql性能优化-慢查询分析、优化索引和配置【转】
  17. Shell 命令行求两个文件每行对比的相同内容
  18. 3.1 wifi网卡RT3070在S3C2440的移植和使用
  19. tcp窗口机制(写的最简单精炼的文章)
  20. 简述FPGA时序约束理论

热门文章

  1. SAP成都研究院DevOps那些事
  2. UVA 12898 - And Or 与和或 (思路题)
  3. 复杂UI的组织-创建者模式-uitableview思想
  4. 剑指offer55 字符流中第一个不重复的字符(最典型错误)
  5. java static block
  6. 安装 Win7 的系统的时候如何分区
  7. 01_8_sql主键生成方式
  8. css3中的nth-child和nth-of-type的区别
  9. Java中的==和equals的区别详解
  10. 科技庄园(背包dp)---对于蒟蒻来说死了一大片的奇题