正题

题目链接:https://www.luogu.com.cn/problem/P3971


题目大意

一个\(1\sim n\)的一个排列,设\(a_i\)表示以\(i\)结尾的最长上升子序列长度,\(b_i\)表示以\(i\)开头的最长下降子序列长度。

给出序列\(a\)求序列\(b\)的最大和。

\(1\leq n\leq 10^5\)


解题思路

考虑数组\(a\)带来的限制

  • 对于一个\(a_i=a_j=w(i<j)\)那么有\(x_i>x_j\)
  • 对于一个\(a_j=w+1\)前一个最近的\(a_i=w\)那么有\(x_i<x_j\)

第一个限制其实不用管,因为如果我们要最优,一定会满足那个限制。

考虑第二个限制,我们将\(i\)向\(j\)连一条边,这样我们就可以得到一棵树(把\(0\)视为虚根的话)。

那么我们子节点的权值一定要比父节点的大,然后在满足这个的前提下我们优先扩展编号大的节点就好了。

也就是从大到小跑一遍\(dfs\)序就可以得到\(x\)数组。

然后用树状数组统计一下答案。

时间复杂度\(O(n\log n)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define lowbit(x) (x&-x)
using namespace std;
const int N=1e5+10;
struct node{
int to,next;
}a[N];
int n,tot,cnt,dfn[N],ls[N],t[N],las[N];
long long ans;
void addl(int x,int y){
a[++tot].to=y;
a[tot].next=ls[x];
ls[x]=tot;return;
}
void dfs(int x){
dfn[x]=++cnt;
for(int i=ls[x];i;i=a[i].next)
dfs(a[i].to);
return;
}
void Change(int x,int val){
while(x<=n){
t[x]=max(t[x],val);
x+=lowbit(x);
}
return;
}
int Ask(int x){
int ans=0;
while(x){
ans=max(ans,t[x]);
x-=lowbit(x);
}
return ans;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
addl(las[x-1],i);las[x]=i;
}
cnt=-1;dfs(0);
for(int i=n;i>=1;i--){
int t=Ask(dfn[i])+1;
ans+=t;
Change(dfn[i],t);
}
printf("%lld\n",ans);
return 0;
}

P3971-[TJOI2014]Alice and Bob【贪心】的更多相关文章

  1. Alice and Bob(贪心HDU 4268)

    Alice and Bob Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. HDU 4268 Alice and Bob 贪心STL O(nlogn)

    B - Alice and Bob Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  3. [TJOI2014]Alice and Bob[拓扑排序+贪心]

    题意 给出一个序列的以每一项结尾的 \(LIS\) 的长度a[],求一个序列,使得以每一项为开头的最长下降子序列的长度之和最大. \(n\leq 10^5\) . 分析 最优解一定是一个排列,因为如果 ...

  4. BZOJ5158 [Tjoi2014]Alice and Bob 【贪心 + 拓扑】

    题目链接 BZOJ5158 题解 题中所给的最长上升子序列其实就是一个限制条件 我们要构造出最大的以\(i\)开头的最长下降子序列,就需要编号大的点的权值尽量小 相同时当然就没有贡献,所以我们不妨令权 ...

  5. [BZOJ 5158][Tjoi2014]Alice and Bob

    传送门 \(\color{green}{solution}\) 贪心 /************************************************************** P ...

  6. [TJOI2014] Alice and Bob

    非常好的一道思维性题目,想了很久才想出来qwq(我好笨啊) 考虑a[]数组有什么用,首先可以yy出一些性质 (设num[i]为原来第i个位置的数是什么 , 因为题目说至少有一个排列可以满足a[],所以 ...

  7. [bzoj5158][Tjoi2014]Alice and Bob

    好羞愧啊最近一直在刷水... 题意:给定序列$c$的$a_i$,构造出一个序列$c$使得$\sum b_i$最大. 其中$a_i$表示以$c_i$结尾的最长上升子序列长度,$b_i$表示以$c_i$为 ...

  8. HDU4268 Alice and Bob(贪心+multiset)

    Problem Description Alice and Bob's game never ends. Today, they introduce a new game. In this game, ...

  9. HDU 4268 Alice and Bob(贪心+Multiset的应用)

     题意: Alice和Bob有n个长方形,有长度和宽度,一个矩形能够覆盖还有一个矩形的条件的是,本身长度大于等于还有一个矩形,且宽度大于等于还有一个矩形.矩形不可旋转.问你Alice最多能覆盖Bo ...

  10. 关于TJOI2014的一道题——Alice and Bob

    B Alice and Bob •输入输出文件: alice.in/alice.out •源文件名: alice.cpp/alice.c/alice.pas • 时间限制: 1s 内存限制: 128M ...

随机推荐

  1. C#序列化和反序列化 之 dynamic 动态Json的反序列化

    序列化和反序列化的常识不再赘述,如果不清楚这个,可以 参考一下其他人写的文章https://www.cnblogs.com/maitian-lf/p/3670570.html 总结的说, 序列化 是把 ...

  2. new和delete关键字

    new关键字创建出来的对象位于什么地方?很明显嘛,new关键字创建出来的对象一定位于堆空间,这种说法一定正确吗?本篇博客帮你揭开其神秘的面纱. 被忽略的事实new/delete的本质是C++预定义的操 ...

  3. 关于Mysql 5.7版本 一直出现时间 不对 链接出现问题 以及日志的问题 解决方案

    问题: mysql版本号: 报错信息: Cause:java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecogni ...

  4. 刷题-力扣-541. 反转字符串 II

    541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...

  5. 从新建文件夹开始构建ShadowPlay Engine(5)

    本篇序言 从本篇开始,我们要开始构建引擎核心中的系统组件部分,广义上讲其实我们从开始到现在一直都是在构建引擎核心中的系统部分,但严格的定义中系统组件大概有这么几个:内存管理,线程管理,文件管理,时间系 ...

  6. 多线程-synchorized

    synchorized锁升级过程: synchorized锁升级过程中只能升级不能降级,起初是JDK早期(1.5之前),是重量级锁,是找操作系统申请OS锁.所谓重量级锁是说获取锁和释放锁都需要经过操作 ...

  7. spring 》Cglib赋值

    第一个:字节码文件时带有ENHANCERBYCGLIB,FastClassByCGLIB组成的文件名 第二个:字节码文件时带有ENHANCERBYCGLIB 第三个:字节码文件时带有FastClass ...

  8. VMware虚拟机 + ubuntu16.04 Linux OpenCV打不开摄像头解决办法

    通过如下步骤,已解决:(不知哪个步骤是关键,全写下来) sudo apt-get update sudo apt-get upgrade 在Windows下先确认摄像头能正常读取. USB控制器选择U ...

  9. 去除所有js,html,css代码

    <?php$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript ...

  10. MySQL主库手动复制至从库

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 主库手动复制至从库 1.1 Master主库锁表 1.2 主库备份 1.3 从 ...