题目

P4309 [TJOI2013]最长上升子序列

做法

最长上升序列的求法肯定是烂大街了

水题是肯定的,确定出序列的位置然后套个树状数组就好了(强制在线的话改成线段树维护前缀最值也行)

所以说这题其实难点在与怎么让代码简洁,见识到一个新的\(STL\):\(rope\)

My complete code

#include<bits/stdc++.h>
#include<ext/rope>
using namespace std;
typedef int LL;
const LL maxn=1e6;
__gnu_cxx:: rope<LL> a;
LL n;
LL tree[maxn],ans[maxn];
inline LL Lowbit(LL x){ return x&(-x); }
inline LL Query(LL x){
LL ret(0);
for(;x;x-=Lowbit(x)) ret=max(ret,tree[x]);
return ret;
}
inline void Modify(LL x,LL val){
for(;x<=n;x+=Lowbit(x))
tree[x]=max(tree[x],val);
}
int main(){
cin>>n;
for(LL i=1;i<=n;++i){
LL p; cin>>p;
a.insert(p,i);
}
for(LL i=0;i<n;++i){
LL num=a[i];
ans[num]=Query(num-1)+1;
Modify(num,ans[num]);
}
for(LL i=1;i<=n;++i){
ans[i]=max(ans[i],ans[i-1]);
cout<<ans[i]<<endl;
}return 0;
}

P4309 [TJOI2013]最长上升子序列的更多相关文章

  1. 2021.12.07 [TJOI2013]最长上升子序列(Treap+DP)

    2021.12.07 [TJOI2013]最长上升子序列(Treap+DP) https://www.luogu.com.cn/problem/P4309 题意: 给定一个序列,初始为空.现在我们将1 ...

  2. [BZOJ3173][Tjoi2013]最长上升子序列

    [BZOJ3173][Tjoi2013]最长上升子序列 试题描述 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数字,我们都想知道此时最长上 ...

  3. BZOJ 3173: [Tjoi2013]最长上升子序列

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1524  Solved: 797[Submit][St ...

  4. Bzoj 3173: [Tjoi2013]最长上升子序列 平衡树,Treap,二分,树的序遍历

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1183  Solved: 610[Submit][St ...

  5. BZOJ 3173: [Tjoi2013]最长上升子序列( BST + LIS )

    因为是从1~n插入的, 慢插入的对之前的没有影响, 所以我们可以用平衡树维护, 弄出最后的序列然后跑LIS就OK了 O(nlogn) --------------------------------- ...

  6. BZOJ 3173: [Tjoi2013]最长上升子序列 [splay DP]

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1613  Solved: 839[Submit][St ...

  7. bzoj3173[Tjoi2013]最长上升子序列 平衡树+lis

    3173: [Tjoi2013]最长上升子序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2253  Solved: 1136[Submit][S ...

  8. BZOJ_3173_[Tjoi2013]最长上升子序列_splay

    BZOJ_3173_[Tjoi2013]最长上升子序列_splay Description 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数 ...

  9. 【LG4309】【BZOJ3173】[TJOI2013]最长上升子序列

    [LG4309][BZOJ3173][TJOI2013]最长上升子序列 题面 洛谷 BZOJ 题解 插入操作显然用平衡树就行了 然后因为后面的插入对前面的操作无影响 就直接在插入完的序列上用树状数组求 ...

随机推荐

  1. mediawiki常用设置

    修改mediawiki的logo图标 在LocalSettings.php文件中添加或修改以下代码: //$wgLogo             = "$wgStylePath/common ...

  2. php 远程调用redis

    <?php $redis_conf = array ( "active_code"=>array( "host" => "14.29 ...

  3. 任何应用程序都可拥有 Web Service 组件。

    任何应用程序都可拥有 Web Service 组件. Web Service 的创建与编程语言的种类无关. 本章节我们将为大家介绍使用 PHP 的 SOAP 扩展来创建 Web Service. SO ...

  4. 1249 Problem Q

    问题 Q: 比大小 时间限制: 1 Sec  内存限制: 128 MB 提交: 159  解决: 66 [提交][状态][讨论版] 题目描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如 ...

  5. aspx.cs方法设置webmenthod特性接收ajax请求

    cs代码: public partial class TelerikWebMethod : BasePage//System.Web.UI.Page { protected void Page_Loa ...

  6. python MD5操作

    def my_md5(str): import hashlib new_str = str.encode() #把字符串转成bytes类型 # new_str = b'%s'%str #把字符串转成b ...

  7. IIPP迷你项目(一)“Rock-paper-scissor-lizard-Spock”

    0 前言——关于IIPP 本系列博客的内容均来自<An Introduction to Interactive Programming in Python (Part 1)>(在此我简称为 ...

  8. 1105 第K大的数(二分)

    1105 第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 数组A和数组B,里面都有n个整数.数组C共有n^2个整数,分别是A[0] * B[0],A[0 ...

  9. JQuery UI 入门

    1. JQuery UI 概述 1.1 JQuery UI 主要分为三部分: 交互部件(interactions):是一些与鼠标交互相关的内容; 小部件(widgets): 主要是一些页面的扩展; 效 ...

  10. bash常见命令

    pwd (Print Working Directory) 查看当前目录 cd (Change Directory) 切换目录,如 cd /etc ls (List) 查看当前目录下内容,如 ls - ...