題目描述
為了把工廠中高低不等的物品按從低到高排好序,工程師發明了一種排序機械臂。它遵循乙個簡單的排序規則,第一次操作找到高度最低的物品的位置 p_1p
1 ,並把左起第乙個物品至 p_1p
1 間的物品 (即區間 [1,p_1][1,p
1 ] 間的物品) 反序;第二次找到第二低的物品的位置 p_2p
2 ,並把左起第二個至 p_2p
2 間的物品 (即區間 [2,p_2][2,p
2 ] 間的物品) 反序……最終所有的物品都會被排好序。
樣例說明
上圖給出有六個物品的示例,第一次操作前,高度最低的物品在位置 44 ,於是把第一至第四的物品反序;第二次操作前,第二低的物品在位罝六,於是把第二至六的物品反序……
你的任務便是編寫乙個程式,確定乙個操作序列,即每次操作前第 ii 低的物品所在位置 p_ip
i ,以便機械臂工作。需要注意的是,如果有高度相同的物品,必須保證排序後它們的相對位置關係與初始時相同。
輸入輸出格式
輸入格式:
第一行包含正整數n,表示需要排序的物品數星。
第二行包含n個空格分隔的整數 p_ip
i ,表示每個物品的高度。
輸出格式:
輸出一行包含n個空格分隔的整數pi。
\(splay\)的練手題。 剛開始想拿個treap查詢第\(k\)大的我就是個弱智。 我們先搞個結構體,存值的大小和值的位置,因為答案與原值無關,所以我們結構體排序一下就得到了第\(k\)次操作需要動的節點位置
因為剛開始時對於位置來說是有序的,所以我們有序的插入每個節點,因為有序列翻轉所以我們要加上哨兵節點(謝謝花)。我們在上一步已經處理好了第\(k\)步需要操作的點,\(splay\)到根,左子樹大小即為這個點左邊的點,同時也是這個點的\(rank\)(注意哨兵節點對結果的影響)。得到了\(rank\)就可以輸出了。現在有了左端點已經給出,又有了右端點(就是\(rank\)嘛),所以序列翻轉即可
值得注意的是,這次我們輸出前不包括\(find\),故不能\(pushdown\),所以我們需要在\(splay\)函式中手動加上\(pushdown\)。
void splay(int id, int goal)
if(!goal)root = id;
}
#include#include#include#include#include#includetypedef long long ll;
using namespace std;
int rd()
while(c >= '0' && c <= '9')
return flag * out;
}const int maxn = 100019,inf = 1e9;
int ch[maxn][2];
int val[maxn];
int size[maxn],pos[maxn];//pos用來表示某個值的位置
int lazy[maxn];
int fa[maxn];
int root, tot;
int new(int f, int v)
void pushup(int id)
void pushdown(int id)
}bool lor(int id)
void spin(int id)
void splay(int id, int goal)
if(!goal)root = id;
}int find(int id, int rank)
void insert(int v)
void reverse(int l, int r)
int num;
struct nodei[maxn];
bool cmp(node a, node b)
int main()
printf("%d\n", num);
return 0;
}
P3165 CQOI2014 排序機械臂
為了把工廠中高低不等的物品按從低到高排好序,工程師發明了一種排序機械臂。它遵循乙個簡單的排序規則,第一次操作找到攝低的物品的位置p1,並把左起第乙個至p1間的物品反序 第二次找到第二低的物品的位置p2,並把左起第二個至p2間的物品反序.最終所有的物品都會被排好序。上圖給出 個示例,第 次操作前,菝低...
CQOI2014 排序機械臂
題目鏈結 洛谷 p3165 bzoj 3506 解析 如果用 splay 做,需要先排序,記錄每個點被選中的順序。考慮到 fhq treap 的 heap 性質,直接將結點的 key 值設為每個物品的高度。充分利用小根堆的性質,使每次被選中的結點一定是根結點。當資料單調時,操作總複雜度為 o n 但...
CQOI2014 排序機械臂
一道很水很水的題,splay樹儲存乙個最小值,每次查詢最小值所在的位置,旋轉到根,輸出它在第幾位。然後將它之前的節點打上翻轉標記,維護一下即可。注意這道題要先排序,因為翻轉操作之後就不知到它原來的位置了。1 never forget why you start 2 include3 include4...