【問題背景】
zhx 給他的妹子們排序。
【問題描述】
zhx有n個妹子,他對第i個妹子的好感度為ai, 且所有ai兩兩不相等。現在n個妹子隨意站成一 排,他要將她們根據好感度從小到大排序。 他使用的是氣泡排序演算法。如果排序過程中 好感度為ai的妹子和好感度為aj的妹子發生了交換, 那麼她們之間會發生一場口角。
現在 zhx 想知道, 給定妹子的初始排列, 在排序完成後, 最多存在多少個妹子, 她們任意兩 人之間沒發生過口角。
正式地, 考慮對陣列ai進行氣泡排序, 如果ai和aj在排序過程中發生交換,那麼在兩個元素之 間連一條邊。你需要求出,排序結束後,最多存在多少個元素,其中任意兩個元素之間不存在連邊。
【輸入格式】
第一行兩個整數 n, 表示妹子數量。
接下來一行 n 個整數ai,表示初始第 i 個妹子的好感度。
【輸出格式】
一行乙個整數, 表示最多滿足要求的妹子的個數。
【樣例輸入】
33 1 2
【樣例輸出】
2【樣例解釋】
。【資料規模與約定】
對於30%的資料, 1 ≤n≤ 16。
對於70%的資料, 1 ≤n≤ 5000。
對於100%的資料, 1 ≤n≤ 100000, 0 ≤ai首先,直接冒泡的複雜度是n^2,然後再瞎搞就是30的暴力啦。其次呢,如果你看出來(其實是瞎猜出來)
if(ai那麼你就get了這個題了,emmmm,其實做題的時候還不知道什麼事lis,但是看資料範圍就瞎搞了乙個nlogn的做法,瑟瑟發抖。然後並沒有a,首先我輸出了妹子,其次我的二分寫掛啦。
對於70分,我猜是n^2的dp,emmmm,貌似線段樹維護優化到nlogn也可以a,qwq待會試一下貼上來。
#include#includeinline
intread()
while(c>='
0'&&c<='9'
)
return k*f;
}int ma[100010
];int len=0
;void ef(int l,int e,int
value)
int m=(l+e)>>1
;
if(ma[m]>=value) ef(l,m,value);
else ef(m+1
,e,value);
}int
main()
else
ef(1
,len,mz);
}printf(
"%d\n
",len);//
輸出len,不是mz
//for(int i=1;i<=len;++i) printf("%d ",ma[len]);
return0;
}
Gty的妹子樹
我曾在弦歌之中聽過你,檀板聲碎,半出折子戲。舞榭歌台被風吹去,歲月深處尚有餘音一縷 gty神 xian 犇 chong 從來不缺妹子 他來到了一棵妹子樹下,發現每個妹子有乙個美麗度 由於gty很哲 學,他只對美麗度大於某個值的妹子感興趣。他想知道某個子樹中美麗度大於k的妹子個數。某個妹子的美麗度可能...
牛半仙的妹子序列
傳送門 to nowcoder 不妨把題目中的 魅力值 叫做 a langle a rangle a 用 d p tt dp dp,轉移條件比較苛刻。如果 f j f j f j 能轉移到 f i f i f i 需要滿足 只關注不超過a ia i ai 的數時,aj aj a j a jaj aj...
牛半仙的妹子序列
牛半仙有 n 個妹子,魅力值分別為 1 n,排成一排。牛半仙會在這些妹子中選若干個,但是他很 貪婪,他只會選完美妹子序列。乙個妹子序列 p ip i pi 指妹子的位置 是完美的,當且僅當其是一 個上公升序列,且不存在乙個 j,使得j pm j p m j pm 且 v j vp mv j v vj...