[BZOJ]3173: [Tjoi2013]最長上升子序列

 題解:? ?考慮按照元素升序加入? 所以對位置在其后的元素LIS無影響 然后從前面位置的最大值轉移過來就行 ,,,,平衡樹無腦模擬

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <set>
#include <map>
#define mp make_pair
#define pb push_back
#define pii pair<int,int>
#define link(x) for(edge *j=h[x];j;j=j->next)
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
const int MAXN=3e5+10;
const double eps=1e-8;
#define ll long long
using namespace std;
struct edge{int t,v;edge*next;}e[MAXN<<1],*h[MAXN],*o=e;
void add(int x,int y,int vul){o->t=y;o->v=vul;o->next=h[x];h[x]=o++;}
ll read(){ll x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return x*f;
}int key[MAXN],maxx[MAXN],pre[MAXN],ch[MAXN][2],sz[MAXN];
int rt,n;void newnode(int x,int t){key[x]=maxx[x]=t;pre[x]=ch[x][0]=ch[x][1]=0;sz[x]=1;
}void up(int x){sz[x]=sz[ch[x][0]]+sz[ch[x][1]]+1;maxx[x]=max(key[x],max(maxx[ch[x][0]],maxx[ch[x][1]]));
}void rotate(int x,int kind){int y=pre[x];ch[y][!kind]=ch[x][kind];pre[ch[x][kind]]=y;if(pre[y])ch[pre[y]][ch[pre[y]][1]==y]=x;pre[x]=pre[y];ch[x][kind]=y;pre[y]=x;up(y);
}void splay(int x,int goal){while(pre[x]!=goal){if(pre[pre[x]]==goal)rotate(x,ch[pre[x]][0]==x);else{int y=pre[x];int kind=ch[pre[y]][0]==y;if(ch[y][kind]==x)rotate(x,!kind),rotate(x,kind);else rotate(y,kind),rotate(x,kind);}}if(goal==0)rt=x;up(x);
}int find1(int x,int k){if(k==sz[ch[x][0]]+1)return x;else if(k<=sz[ch[x][0]])return find1(ch[x][0],k);else return find1(ch[x][1],k-sz[ch[x][0]]-1);
}void inte(){newnode(n+1,0);newnode(n+2,0);rt=n+1;ch[rt][1]=n+2;pre[n+2]=rt;up(rt);
}int query(int id,int x){//cout<<find1(rt,x)<<endl;splay(find1(rt,x),0);splay(find1(rt,x+1),rt);int t=max(maxx[ch[rt][0]],key[rt]);t=max(t+1,1);newnode(id,t);pre[id]=ch[rt][1];ch[ch[rt][1]][0]=id;up(ch[rt][1]);up(rt);return maxx[rt];
}int main(){n=read();inte();inc(i,1,n){int t=read();printf("%d\n",query(i,t+1));}return 0;
}

  

3173: [Tjoi2013]最長上升子序列

Time Limit:?10 Sec??Memory Limit:?128 MB
Submit:?2770??Solved:?1398
[Submit][Status][Discuss]

Description

給定一個序列,初始為空。現在我們將1到N的數字插入到序列中,每次將一個數字插入到一個特定的位置。每插入一個數字,我們都想知道此時最長上升子序列長度是多少?

Input

第一行一個整數N,表示我們要將1到N插入序列中,接下是N個數字,第k個數字Xk,表示我們將k插入到位置Xk(0<=Xk<=k-1,1<=k<=N)

Output

N行,第i行表示i插入Xi位置后序列的最長上升子序列的長度是多少。

Sample Input

3
0 0 2

Sample Output

1
1
2

HINT

?

100%的數據 n<=100000

?

轉載于:https://www.cnblogs.com/wang9897/p/10363749.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

轉:HTTP協議簡介與在python中的使用詳解

1. 使用谷歌/火狐瀏覽器分析 在Web應用中&#xff0c;服務器把網頁傳給瀏覽器&#xff0c;實際上就是把網頁的HTML代碼發送給瀏覽器&#xff0c;讓瀏覽器顯示出來。而瀏覽器和服務器之間的傳輸協議是HTTP&#xff0c;所以&#xff1a; HTML是一種用來定義網頁的文本&#xff0c…

深受企業青睞的華為云

作為中國經濟活力與韌性的重要保障&#xff0c;無數中小企業也在為奪得各自領域的冠軍你追我趕。而席卷全球的數字化轉型浪潮&#xff0c;則將這場冠軍爭奪賽推向了關鍵節點。企業數字化的第一步就是業務云端化&#xff0c;對企業來說云計算是不可或缺的數字底座。上云&#xf…

一個程序員的水平能差到什么程度?

老板覺得公司里都是男的&#xff0c;缺少一點陰柔之氣&#xff0c;想平衡一下&#xff0c;正巧當時互金公司倒了一大批&#xff0c;大批簡歷投到公司&#xff0c;老板以為自己也是技術出身&#xff0c;就招了一個三年工作經驗的女程序員&#xff0c;互金出來的&#xff0c;要價…

vue路由詳解版一目了然

概念 路由的本質就是一種對應關系&#xff0c;比如說我們在url地址中輸入我們要訪問的url地址之后&#xff0c;瀏覽器要去請求這個url地址對應的資源。 那么url地址和真實的資源之間就有一種對應的關系&#xff0c;就是路由。 路由分為前端路由和后端路由 1).后端路由是由服務…

go語言環境搭建

1、windows環境搭建   1、安裝go   2、安裝goland開發工具包 2、test.go /* 可執行文件&#xff0c;包名必須是main */ package main /* fmt 字符串格式化的包 */ import "fmt"/*main入口函數*/ func main() { fmt.Printf("Hello, world" )} View Code…

進階函數

一、函數對象 函數是第一類對象&#xff1a;函數名指向的值可以被當做參數傳遞 1.函數名可以被傳遞 def func():print(func)f func # 函數名可以當做變量名 print(f) # f指向的也是函數func指向函數體代碼的內存地址 2.函數名可以被當做參數傳遞給其他參數 def func():print…

vue腳手架基礎API全面講解【內附多個案例】

vscode-插件補充 vue文件代碼高亮插件-vscode中安裝 代碼提示插件-vscode中安裝 知識點自測 想學會今天的內容, 先測測這幾個會不會 表達式, 變量是什么 new的作用和含義 實例化對象 什么是對象上的, 屬性和方法 對象的賦值和取值 this的指向 npm/yarn是什么, package.json干…

mysql 和 sqlserver sql差異比較

mysql:select * from table_name limit 100,200;--取出從100到200的數據 獲取時間&#xff1a;mysql:now() mysql tinyint&#xff08;0,1&#xff09; → bit float &#xff08;decimal(19,4)&#xff09;→ moneytext → ntextvarchar →nvarchar 轉載于:https://www.cnblo…

Vue 過濾器、計算屬性、偵聽器 圖解版 一目了然

文章目錄本篇學習目標1. vue基礎1.0_vue基礎 v-for更新監測1.1_vue基礎_v-for就地更新1.2_vue基礎_虛擬dom1.3_vue基礎_diff算法情況1: 根元素變了, 刪除重建情況2: 根元素沒變, 屬性改變, 元素復用, 更新屬性1.4_vue基礎_diff算法-key情況3: 根元素沒變, 子元素沒變, 元素內容…

linux shell命令行選項與參數用法詳解

問題描述&#xff1a;在linux shell中如何處理tail -n 10 access.log這樣的命令行選項&#xff1f;在bash中&#xff0c;可以用以下三種方式來處理命令行參數&#xff0c;每種方式都有自己的應用場景。1&#xff0c;直接處理&#xff0c;依次對$1,$2,...,$n進行解析&#xff0c…

Vue自定義指令原來這么簡單

本篇學習目標 能夠了解組件進階知識能夠掌握自定義指令創建和使用能夠完成tabbar案例的開發 1. 組件進階 1.0 組件進階 - 動態組件 目標: 多個組件使用同一個掛載點&#xff0c;并動態切換&#xff0c;這就是動態組件 需求: 完成一個注冊功能頁面, 2個按鈕切換, 一個填寫注冊…

重載(overload)與重寫(override)的區別

overload&#xff08;重載&#xff09;:在同一個類中&#xff0c;方法名相同&#xff0c;參數列表不相同。與返回值類型無關。 override&#xff08;重寫&#xff09;:存在同一個類中&#xff0c;或者父子接口中&#xff0c;方法名相同個&#xff0c;參數列表相同。遵循“兩同兩…

python學習,day3:函數式編程,*arge,**kwargs

對于不固定長度的參數&#xff0c;需要使用*arge&#xff0c;**kwargs來調用&#xff0c;區別是*arge是轉換為元組&#xff0c;而kwargs轉化為字典 # codingutf-8 # Author: RyAn Bi def test(*args): #參數組print(args)test(1,2,4,6,7,8) #方式1 test(*[1,2,4,5,6]) #方式2 #…

那些被人忽略的Vue導航知識

本篇學習目標 能夠了解單頁面應用概念和優缺點能夠掌握vue-router路由系統使用能夠掌握鏈接導航和編程式導航用法能夠掌握路由嵌套和路由守衛能夠掌握vant組件庫基礎使用 1. vue路由簡介和基礎使用 1.0 什么是路由 目標: 設備和ip的映射關系 目標: 接口和服務的映射關系 目…

passwd命令

-n 在這幾天你不能更改密碼&#xff01; -x 在n<時間<x在這段時間內你必須修改密碼&#xff01; -w 當距離x日期還有w天的時候開始提醒你改密碼&#xff01; -i 密碼過期i天之后&#xff0c;此密碼停用&#xff0c;你也就無法用此密碼登陸這個用戶了。注意是密碼過期之后…

一文帶你吃透Vue生命周期(結合案例通俗易懂)

文章目錄本篇學習目標1. vue生命周期1.0_人的-生命周期1.1_鉤子函數1.2_初始化階段1.3_掛載階段1.4_更新階段1.5_銷毀階段2. axios2.0_axios基本使用2.1_axios基本使用-獲取數據2.2_axios基本使用-傳參2.3_axios基本使用-發布書籍2.4_axios基本使用-全局配置3. nextTick和nextT…

[SCOI2012]滑雪 (最小生成樹 Kruskal)

題目描述 a180285非常喜歡滑雪。他來到一座雪山&#xff0c;這里分布著M條供滑行的軌道和N個軌道之間的交點&#xff08;同時也是景點&#xff09;&#xff0c;而且每個景點都有一編號i(1≤i≤N)和一高度Hi?。a180285能從景點ii滑到景點j當且僅當存在一條i和j之間的邊&#xf…

來學習ansibie(1)

# ansible 批量在遠程主機上執行命令 python2.7編寫 ## 安裝 第一步:下載epel源 shellwget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 第二步:安裝 shellyum install -y ansible ## ansible 命令格式 shellUsage: ansible <host-pattern&g…

CQYZOJ P1392 拔河問題

題目\(1\) Description 一個學校舉行拔河比賽&#xff0c;所有的人被分成了兩組&#xff0c;每個人必須&#xff08;且只能夠&#xff09;在其中的一組&#xff0c;且兩個組內的所有人體重加起來盡可能地接近. Input 第\(1\)行是一個\(n\)&#xff0c;表示參加拔河比賽的總人數…

靈活的Vue組件——原來這么簡單

本篇學習目標 能夠理解vue組件概念和作用能夠掌握封裝組件能力能夠使用組件之間通信能夠完成todo案例 1. vue組件 1.0_為什么用組件 以前做過一個折疊面板 需求: 現在想要多個收起展開的部分 方案1: 復制代碼 代碼重復 冗余不利于維護 案例用less寫的樣式, 所以下載 ya…