好羞愧啊最近一直在刷水。。。

题意:给定序列$c$的$a_i$,构造出一个序列$c$使得$\sum b_i$最大。

其中$a_i$表示以$c_i$结尾的最长上升子序列长度,$b_i$表示以$c_i$为开头的最长下降子序列长度。

首先$a_i = x$一定是从一个$a_j = x-1$转移而来的。这里让$a_i$从所有$a_j = x-1$的$a_j$里$c_j$最小的转移而来,一定不会有更优的转移。

因为这样它还可以和其它$a_j$做出至少1的贡献。那么我们由$i$向$j$连边。这样会形成一棵以0为根的树,后连边的点先遍历,令$c_j $等于dfs序。这样得到的序列就可以满足题意。求一遍$b$就行了。

#include<bits/stdc++.h>
using namespace std;
const int N=100010;
inline int read(){int r=0,c=getchar();while(!isdigit(c))c=getchar();while(isdigit(c))r=r*10+c-'0',c=getchar();return r;
}
struct Edge{int to,nxt;
}e[N*2];
int head[N],cnt=1;
void add(int u,int v){e[cnt]=(Edge){v,head[u]};head[u]=cnt++;
}
int a[N],las[N],n,dc;
void dfs(int u){a[u]=++dc;for(int i=head[u];i;i=e[i].nxt)dfs(e[i].to);
}
int b[N],c[N];
void upd(int x,int v){for(int i=x;i<=n;i+=i&-i)c[i]=max(c[i],v);
}
int ask(int x){int ret=0;for(int i=x;i;i-=i&-i)ret=max(ret,c[i]);return ret;
}
int main(){n=read();for(int i=1;i<=n;i++){int x=read();add(las[x-1],i);las[x]=i;}dfs(0);long long ans=0;for(int i=n;i;i--){b[i]=ask(a[i]-1)+1;ans+=1ll*b[i];upd(a[i],b[i]);}cout<<ans;
}

转载于:https://www.cnblogs.com/orzzz/p/8444149.html

[bzoj5158][Tjoi2014]Alice and Bob相关推荐

  1. [TJOI2014] Alice and Bob

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

  2. Sicily1798. Alice and Bob[策略问题]

    [原题描述] Description Bob is very famous because he likes to play games. Today he puts a chessboard in ...

  3. SDUT2608(Alice and Bob)

    题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynom ...

  4. NYOJ 1053 Alice and Bob (N)

    Alice and Bob (N) 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 也不知道是谁规定的,Alice 和 Bob总是有一堆做不完的事,和一堆奇葩想法,而且重 ...

  5. NYOJ练习题 又见Alice and Bob

    又见Alice and Bob 时间限制:1000 ms  |  内存限制:65535 KB 描述 集训生活如此乏味,于是Alice和Bob发明了一个新游戏.规则如下:首先,他们得到一个集合包含n个特 ...

  6. 牛客 - Alice and Bob(尺取+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,和一个数字 kkk.现在给出 mmm 次询问,每次查询需要回答区间 [l,r][l,r][l,r] 内有多少个子区间,满足区间内不同的数字 ...

  7. 2021牛客暑期多校训练营1 A.Alice and Bob 博弈 SG函数

    传送门 文章目录 题意: 思路: 题意: 有两堆石子,两个人每次可以进行如下操作:从某一堆狮子中拿出x(x>0)x(x>0)x(x>0)个,从另一堆石子中拿出s∗x(s>=0) ...

  8. Alice and Bob

    Alice and Bob 题意: 两人博弈,每次一个人从一堆中拿k个,同时从另一堆拿k * s(s>=0)个,问谁先不能拿 10000组数据,N<=5000 题解: (x,y)表示第一堆 ...

  9. 【CodeForces - 347C 】Alice and Bob (思维,数学,等差数列)

    题干: It is so boring in the summer holiday, isn't it? So Alice and Bob have invented a new game to pl ...

最新文章

  1. Spring Cloud Gateway 整合阿里 Sentinel网关限流实战!
  2. 《阿里巴巴Java开发规约》插件全球首发!
  3. 人生不能过分认真(较真),但必须认真!
  4. python文件处理系列(二):Excel文件读取库xlwings
  5. 字节流写数据的两个小问题
  6. 某公司数据恢复报告书
  7. K8S Learning(4)——Namespace
  8. php3.2.3分组查询,ThinkPHP3.2.3版本如何设置应用分组
  9. 数据库的主键和外键总结
  10. sql语句查看MySQL数据库大小
  11. jQuery-$(document).ready和$(window).load有什么区别?
  12. socket套接字选项列表
  13. 关于cad2010的激活
  14. c# 使用winform内嵌浏览器
  15. 基于单片机的交通灯控制系统设计
  16. libaio介绍和使用
  17. 昆仑通态触摸屏保存历史曲线_昆仑通态TPC7062存盘时间计算
  18. 制造企业年终仓库盘点有哪些好的方法
  19. 账号被计算机远程终止,宽带远程连接被终止怎么办
  20. linux 安装ros软路由,Centos7安装RouterOS软路由

热门文章

  1. Java多线程Queue_Java多线程-BlockingQueue-ArrayBlockingQueue-LinkedBlockingQueue
  2. .NETFramework、C#、VisualStudio 这三者之间关系,你了解吗!
  3. 让MySQL支持InnoDB
  4. 转-人工智能和机器学习领域大牛
  5. 卡巴2009与word冲突完美解决方案,经测试几十台计算机全部通过
  6. GDAL源码剖析(八)之编译GEOS和PROJ4库
  7. 开发Adobe AIR移动应用程序的考虑事项
  8. [若有所悟]IT小兵总结IT人特点及挽留IT人才的九大策略
  9. 发布一套IOCP框架
  10. mysql yum安装和 rpm安装_yum 和 rpm安装mysql彻底删除