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