題意:
給乙個長度2n的序列,每次洗牌可以把前n個數任意排列(記為a),後n個數任意排列(記為b),然後把兩個序列交叉,即把序列排成a1,b1,a2,b2,a3,b3
⋯ ⋯
an,bn。現在初始序列是1,2,3,4…2n,給出乙個目標序列,求能否用兩次洗牌達到目標序列。
思路:大大大水題!!!3行**!!!
因為前n個數和後n個數內部可以任意交換,所以數本身的大小並沒有用,只要關注他屬於前一半還是後一半就好了。
然後可以知道一次洗牌前n個數有(n+1)/2的數還留在前一半,n/2的數被洗到了後一半。
於是我們先把目標狀態轉成第一次操作結果的狀態,即把下標為偶數的放在前一半,奇數放在後一半(下標從0開始)。然後判斷初始狀態的前一半和第一次操作的結果狀態的並集是否恰好具有(n+1)/2個元素即可得出答案。
貼個**:
string shufflingcardsdiv2::shuffle(vector
permutation)
topcoder SRM 642 解題報告
題意 有一張圖,n n 個節點 n 50 role presentation style position relative n 50 n 50 每條邊有乙個高度值,the king要從某條路走過必須滿足他的shoes高度小於等於這條路的高度值。他現在有一些金幣,把一條邊的高度約束上調 k k 個單...
USACO Hamming Codes 解題報告
資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...
USACO Closed Fences 解題報告
幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...