[bzoj5158][Tjoi2014]Alice and Bob
好羞愧啊最近一直在刷水。。。
题意:给定序列$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相关推荐
- [TJOI2014] Alice and Bob
非常好的一道思维性题目,想了很久才想出来qwq(我好笨啊) 考虑a[]数组有什么用,首先可以yy出一些性质 (设num[i]为原来第i个位置的数是什么 , 因为题目说至少有一个排列可以满足a[],所以 ...
- Sicily1798. Alice and Bob[策略问题]
[原题描述] Description Bob is very famous because he likes to play games. Today he puts a chessboard in ...
- SDUT2608(Alice and Bob)
题目描述 Alice and Bob like playing games very much.Today, they introduce a new game. There is a polynom ...
- NYOJ 1053 Alice and Bob (N)
Alice and Bob (N) 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 也不知道是谁规定的,Alice 和 Bob总是有一堆做不完的事,和一堆奇葩想法,而且重 ...
- NYOJ练习题 又见Alice and Bob
又见Alice and Bob 时间限制:1000 ms | 内存限制:65535 KB 描述 集训生活如此乏味,于是Alice和Bob发明了一个新游戏.规则如下:首先,他们得到一个集合包含n个特 ...
- 牛客 - Alice and Bob(尺取+二分)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,和一个数字 kkk.现在给出 mmm 次询问,每次查询需要回答区间 [l,r][l,r][l,r] 内有多少个子区间,满足区间内不同的数字 ...
- 2021牛客暑期多校训练营1 A.Alice and Bob 博弈 SG函数
传送门 文章目录 题意: 思路: 题意: 有两堆石子,两个人每次可以进行如下操作:从某一堆狮子中拿出x(x>0)x(x>0)x(x>0)个,从另一堆石子中拿出s∗x(s>=0) ...
- Alice and Bob
Alice and Bob 题意: 两人博弈,每次一个人从一堆中拿k个,同时从另一堆拿k * s(s>=0)个,问谁先不能拿 10000组数据,N<=5000 题解: (x,y)表示第一堆 ...
- 【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 ...
最新文章
- Spring Cloud Gateway 整合阿里 Sentinel网关限流实战!
- 《阿里巴巴Java开发规约》插件全球首发!
- 人生不能过分认真(较真),但必须认真!
- python文件处理系列(二):Excel文件读取库xlwings
- 字节流写数据的两个小问题
- 某公司数据恢复报告书
- K8S Learning(4)——Namespace
- php3.2.3分组查询,ThinkPHP3.2.3版本如何设置应用分组
- 数据库的主键和外键总结
- sql语句查看MySQL数据库大小
- jQuery-$(document).ready和$(window).load有什么区别?
- socket套接字选项列表
- 关于cad2010的激活
- c# 使用winform内嵌浏览器
- 基于单片机的交通灯控制系统设计
- libaio介绍和使用
- 昆仑通态触摸屏保存历史曲线_昆仑通态TPC7062存盘时间计算
- 制造企业年终仓库盘点有哪些好的方法
- 账号被计算机远程终止,宽带远程连接被终止怎么办
- linux 安装ros软路由,Centos7安装RouterOS软路由
热门文章
- Java多线程Queue_Java多线程-BlockingQueue-ArrayBlockingQueue-LinkedBlockingQueue
- .NETFramework、C#、VisualStudio 这三者之间关系,你了解吗!
- 让MySQL支持InnoDB
- 转-人工智能和机器学习领域大牛
- 卡巴2009与word冲突完美解决方案,经测试几十台计算机全部通过
- GDAL源码剖析(八)之编译GEOS和PROJ4库
- 开发Adobe AIR移动应用程序的考虑事项
- [若有所悟]IT小兵总结IT人特点及挽留IT人才的九大策略
- 发布一套IOCP框架
- mysql yum安装和 rpm安装_yum 和 rpm安装mysql彻底删除