NOI2018 氣泡排序

2022-05-29 05:30:11 字數 1024 閱讀 4379

[題面](

吐槽:好像發的pdf題面的冒泡是掛掛的,還好我還會氣泡排序(逃

具體思路:首先發現當這個序列的最長下降序列長度大於2時,一定不符合要求

那麼我們可以想出乙個$o(n^2)$的dp

$f_i,j$表示前$i$個數,設其中最大的數為$mx$,後面的數中有$j$個數比$mx$小的方案數

然後發現$f_i,j$可以轉移至$i+1,j+k$的位置($k>=-1$)

那麼答案就是從$(0,0)$走到$(n,0)$的方案數,且路徑不能低於x軸

那麼可以把路徑看成乙個括號序列,x座標+1,表示多乙個右括號,y座標表示左括號和右括號的差

那麼我們列舉從哪個位置突破字典序的限制,然後後面就可以隨機遊走,求方案數就組合數搞搞,不能低於x軸就對稱搞搞

ac**

#includeusing

namespace

std;

#define int long long

const

int n=2e6+4

;int n,i,j,m,a[n],ha=998244353

;int

fact[n],inv[n],factinv[n],vis[n];

int qpow(int a,int

b)

return

ans;

}int

t;int c(int x,int

y)int cal(int h,int

dis)

int calc(int x,int

y)

int dis=(x*2-y),h=y;

return (ha+cal(y,2*x-y)-cal(y+2,2*x-y))%ha;

}signed main()

scanf(

"%lld

",&t);

while(t--)

printf(

"%lld\n

",ans);

}return0;

}

NOI2018 氣泡排序

noi2018 氣泡排序 題解性質 模型轉化 首先,乙個排列是 好 的,當且僅當 每個數,要麼是字首最大值,要麼是字尾最小值。討論i和pi的關係即可證明 也就是,排列不能存在 3的下降子串行!換句話說,假設之前填了i個數,最大值是mx,那麼第i 1個數,要麼是剩下數的最小值,要麼是比mx大的數。字典...

NOI2018 歸程 題解

容易發現,當水位線確定了,圖會被分成若干個連通塊,連通塊裡的點可以互相到達,故連通塊內點的答案為其中的點到 1 的距離的最小值,這個可以先 dijkstra 預處理求出 spfa 死了 那考慮怎麼維護連通塊。可持久化並查集?感覺不好搞,有一種神奇的演算法 kruscal 重構樹。其實就是 krusc...

NOI2018 你的名字

題目描述 小 a 被選為了 ion2018 的出題人,他精心準備了一道質量十分高的題目,且已經把除了題目命名以外的工作都做好了。由於 ion 已經舉辦了很多屆,所以在題目命名上也是有規定的,ion 命題手冊規定 每年由命題委員會規定乙個小寫字母字串,我們稱之為那一年的命名串,要求每道 題的名字必須是...