時間限制: 1 秒, 記憶體限制: 32 兆
你有一些小球,從左到右依次編號為1,2,3,...,n. 你可以執行兩種指令(1或者2)。其中, 1 x y表示把小球x移動到小球y的左邊, 2 x y表示把小球x移動到小球y右邊。 指令保證合法,即x不等於y。 例如,初始狀態1,2,3,4,5,6的小球執行1 1 4後,小球1被移動到小球4的左邊,即2,3,1,4,5,6。如果再執行2 3 5,結點3將會移到5的右邊,即2,1,4,5,3,6。
第一行為乙個整數t(0為每個測試用例單獨輸出一行,從左到右輸出最後序列,每個數字後面跟乙個空格。
26 2
1 1 4
2 3 5
5 1
2 1 5
2 1 4 5 3 62 3 4 5 1
感覺自己能把這題做出來好感人啊!!!
今天才知道原來可以用多重陣列表示雙向鍊錶,而且蠻好理解的。
比如這題,申請兩個陣列l,r。然後陣列的下表其實就是那個數,l【x】就表示x左邊相鄰的數,r【x】就表示x右邊相鄰的數。然後考慮,每一次操作,那些數的左右兩邊的值會改變就行了。
當然我開始寫了乙個list版,結果可想而知,超時。。。
#include #include using namespace std;
void ope(list&num,int op,int x,int y) }
for(i = num.begin(); i != num.end(); i++) }
}int main()
list::iterator k;
for(k = num.begin(); k != num.end(); k++)
cout << endl;
} return 0;
}
然後是多重陣列模擬雙向鍊錶版:
#include #include #include #include #include #include #include #include #include using namespace std;
int l[500001],r[500001] = ;
void solve(int op,int x,int y)
else if(op == 2) }
void print(int n)
cout << endl;
}int main()
int op,x,y;
for(int i = 0; i < m; i++)
print(n);
} return 0;
}
加油加油!
Sicily課程作業 1934 移動小球
description 你有一些小球,從左到右依次編號為1,2,3,n.你可以執行兩種指令 1或者2 其中,1 x y表示把小球x移動到小球y的左邊,2 x y表示把小球x移動到小球y右邊。指令保證合法,即x不等於y。例如,初始狀態1,2,3,4,5,6的小球執行1 1 4後,小球1被移動到小球4的...
1934 移動小球
time limit 1 secs,memory limit 32 mb 你有一些小球,從左到右依次編號為1,2,3,n.你可以執行兩種指令 1或者2 其中,1 x y表示把小球x移動到小球y的左邊,2 x y表示把小球x移動到小球y右邊。指令保證合法,即x不等於y。例如,初始狀態1,2,3,4,5...
winform小球移動
private point location private void button1 click object sender,eventargs e private int v1 40 private int v2 40 private void timer1 tick object sender...