1. 程式人生 > >jzyz集訓 0612

jzyz集訓 0612

今天 開始 方案 不能 路徑 同時 枚舉 .... 觀察

今天閔神找的題,題目質量還算不錯,就是有些偏套路了。

第一題:定義一個排列是合法當且僅當這個排列中不存在大於2的循環節,詢問有多少長度為n的排列是合法的且B排列是該排列的子序列。

恩...這題目其實不錯,挺考驗選手對題目性質的觀察的。

首先發現,如果確定了一個B排列從第k+1個位置開始匹配A的m+1個位置以後,可以直接確定後面的方案數。

然後問題就變成了把B排列的前k個放進A排列的前m個有多少種方案數。

然後我就開始了DP,然後我就掛了,原因是匹配方案可能發生重疊,這是DP沒法做的,盡管發生的概率很低,數據水到我還有85。

正確的方法是對於每個K暴力驗證,原因是對於每個K填充方案是唯一的....居然沒看出來,該死,因此只需判斷是否合法即可。

呵呵,我發現我DP走進了死胡同時就應該另起爐竈的,這是我的鍋。

第二題:Q次詢問最短路,有如下限制:只能走邊權遞增的路徑,走的不能超過K條邊。

這兩個玩意你不能都分層圖的,考慮到這是個圖,對於第一個限制可以從小到大枚舉邊,這樣省掉了一維,然後預處理f[i][j][k]即可。

又沒長記性,忘了從小到大枚舉邊的常用套路了,失敗啊,但暴力能A也很玄學。

第三題:從一個凸包上選出一個最小的凸包使得最小的凸包能包住所有的白點。

folyed可以找最小環。關鍵怎麽預處理圖上的邊,對於這個可以二分,考場上想到了,懶得打(暴力有70)。

這也太水了吧。

jzyz集訓 0612