曾經有過一些沉迷日麻的小孩紙,後來呀,他們都去尋找自己的世界了。
kpm也是這樣的小孩紙。他想有乙隻自動整理牌的機器。當麻將以給定的順序進入機器時,通過機器的運轉,使得麻將們出機器的順序是遞增的。所以kpm需要在機器中建立一些傳送帶 (假設這些傳送帶都是足夠長,可以停放很多很多的麻將),問題是,現在kpm需要建立多少條傳送帶才能完成他的機器。
kpm大概有10^5塊麻將吧。
第一行是乙個不大於10^5的數,表述麻將的總數。
第二行是麻將依次進入機器的編號,ai表示編號為ai的麻將在i時刻進入機器,保證是乙個1-n的排列。
乙個數字,表示這個機器最少需要建幾條傳送帶。
98 4 2 5 3 9 1 6 7
4這道題其實很容易看出來是求有多少個下降序列(不重複)
就像很多人寫過的飛彈攔截一樣 我們可以貪心
每個數x我們都可以找已知的序列中每個序列最末也就是最小的數和x比較 比x大的都符合條件
不過由貪心可得越接近x越好 所以我們的目標其實是找到比x大中最小的
然後我們發現 我們維護的序列具有單調性
比如我們每次找到乙個數 x
若序列中沒有符合的 那麼我們會新開乙個序列 而這個序列的末端就是x 一定比前面所有的序列末端都大
若找到了j個符合的n-j——n,那麼n-j就是我們要找的最優解 此時x比1-n-j的末端都大 比n-j——n的末端都小 此時用x替換n-j的末端
容易證明序列仍然單調 那麼我們就可以繼續二分了
#include#includeview code#include
#include
#define ll long long
using
namespace
std;
const
int m=1e5+7
;int
read()
while(c>='
0'&&c<='9')
return ans*f;
}int
n,w[m],cnt,k;
int find(int
k)
returnl;}
intmain()
printf(
"%d\n
",cnt);
return0;
}
汕頭市隊賽 SRM 07 C 整潔的麻將桌
背景 描述 天才麻將少女kpm立志要在日麻界闖出一番名堂。kpm上週雙打了n場麻將,但她這次沒控分,而且因為是全民參與的麻將大賽,所以她的名次範圍是1.10 9。因為找膜法使的事被妹子打斷了三條腿後,kpm這次要用自己的真實本領讓名次嚴格遞增。幸好她從前把出題人的頭像賣給了炮姐,現在kpm可以入侵比...
汕頭市隊賽 SRM 08 A
比賽沒參加 所以回來補題咯 a還是自己yy出來了的 可惜比賽沒有打 描述給乙個 01 串設為其 s,詢問是否存在只出現兩次的 01 串 t。這裡的出現定義為存在一串下標 滿足第二個樣例中,0 出現了兩次 這道題肯定先特判一波 1 和 0 是否只出現了2次 這是唯一乙個t能由單一的1或者0組成的情況 ...
汕頭市隊賽 SRM16 T2
描述 貓和老鼠,看過吧?貓來了,老鼠要躲進洞裡。在一條數軸上,一共有n個洞,位置分別在xi,能容納vi只老鼠。一共有m只老鼠位置分別在xi,要躲進洞裡,問所有老鼠跑進洞裡的距離總和最小是多少。輸入格式 兩個用空格隔開的整數m和n。這一行m個數字分別表示老鼠的位置 接下來n行每行兩個數字分別表示洞的位...