scimoon 意外得到了乙個項鍊,這個項鍊非常的神奇:它有 n 個珠子,一開始每個珠子有乙個編號, 從左到右編號分別是 1 至n,scimoon 進行了 m 次操作,每次操作有下面這麼幾種:
1 x y :表示將編號為 x 的珠子移到編號為 y 的珠子的後面
2 x y :表示將編號為 x 的珠子移到編號為 y 的珠子的前面
3 :表示翻轉這個項鍊,注意翻轉後 1,2 操作中的前後關係會改變
4 :從編號 1 的珠子開始從左到右輸出每個珠子的編號
如果您沒有完全理解題意,您可以通過閱讀樣例解釋幫助理解
第一行兩個數: n 和 m第 2∼m+1 行:輸入每一次操作
對於每次操作 4,輸出這個項鍊每位置上的珠子的編號。示例1
輸入
5 6輸出1 2 4
42 5 343
4
1 3 4 2 5說明1 5 3 4 2
1 2 4 3 5
第一次操作後,2 號珠子被放到了 4 號珠子的後面,項鍊為 [1,3,4,2,5]備註:第二次操作輸出當前的項鍊 [1,3,4,2,5]
第三次操作後,5 號珠子被放到了 3 號珠子的前面,項鍊為 [1,5,3,4,2]
第四次操作輸出當前的項鍊 [1,5,3,4,2]
第五次操作翻轉當前項鍊 [2,4,3,5,1]
第六次操作中,由於我們需要從 1 開始輸出項鍊,因此輸出 [1,2,4,3,5]
1≤n≤10000,1≤m≤100000用陣列模擬雙向鍊錶,最後只過了96%的資料,先把**存放在這。
隨後寫出來後再更新。 (已更新)
#include
using
namespace std;
int n,m,op,x,y,a[
10005
],b[
10005
],c[
10005];
void
print_op()
}void
test()
cout
int i=
1;i<=n;i++
) cout<"........"
<}void
operation
(int op)
}else
if(op ==2)
}else
if(op ==3)
}else
if(op ==4)
//test();
}int
main()
//test();
while
(m--
)}
過100%資料的**#include
using
namespace std;
int n,m,op,x,y,a[
10005
],to[
10005
],from[
10005
],flag=0;
void
print_op()
}else}}
voidf0(
)voidf1(
)void
test()
cout
int i=
1;i<=n;i++
) cout<"........"
<}void
operation
(int op)
else
}else
if(op ==2)
else
}else
if(op ==3)
else
if(op ==4)
//test();
}int
main()
//test();
while
(m--
)}
牛客小白月賽29(簽到 A E G H)
貪心,由於基地可以重複銷毀,所以找出找出每架戰機可轟炸基地的最大價值,排序之後貪心找一下即可 include include using namespace std const int n 1e6 15 struct nodeno n bool cmp node a,node b int a n i...
牛客小白月賽29 A 進攻
題目位址 一 題目內容 二 解題思路 scimoon 率領的反叛軍已經做好了準備 他的手下有 n 個戰機,每架戰機有乙個破壞力 ai 帝國有 m 個基地,每個基地有乙個防禦值 di,基地有乙個價值 vi 若乙個戰機的攻擊力嚴格大於基地的防禦值,則可以破壞該基地,得到這個基地的價值 v 帝國的後備資源...
牛客 2020 11 14牛客小白月賽29 B
by 041 本人原文 簡單的說,對於乙個bool量x x 1 x x 0 0 x 1 1 x 0 x x 1 x x 0 x 所以,對於每一次操作,在有影響 上面的2 3 5三種情況 到的位置加入相應操作的標記最後整合就行 對於第i位 0的操作 清空之前該位置所有的操作,加上標記1 對於第i位 1...