time limit: 1 sec
memory limit: 128 mb
submit: 10
solved: 6 [
submit][
status][
web board]
你有一行盒子,從左到右依次編號為1, 2, 3,…, n。你可以執行四種指令:
l 1 x y表示把盒子x移動到盒子y左邊(如果x已經在y的左邊則忽略此指令)。
l 2 x y表示把盒子x移動到盒子y右邊(如果x已經在y的右邊則忽略此指令)。
l 3 x y表示交換盒子x和y的位置。
l 4 表示反轉整條鏈。
指令保證合法,即x不等於y。例如,當n=6時在初始狀態下執行1 1 4後,盒子序列為2 3 1 4 5 6。接下來執行2 3 5,盒子序列變成2 1 4 5 3 6。再執行3 1 6,得到2 6 4 5 3 1。最終執行4,得到1 3 5 4 6 2。
輸入包含不超過10組資料,每組資料第一行為盒子個數n和指令條數m(1<=n,m<=100,000),以下m行每行包含一條指令。
每組資料輸出一行,即所有奇數字置的盒子編號之和。位置從左到右編號為1~n。
6 4
1 1 4
2 3 5
3 1 6 4
6 31 1 4
2 3 5
3 1 6
100000 1 4
case 1: 12
case 2: 9
case 3: 2500050000
用陣列模擬雙向鍊錶,其中操作3需要分情況判斷,操作1,2要根據操作4的奇偶確定,最後判斷盒子數的奇偶,操作4的奇偶後求和
#include#includestruct nodea[100100];
int main()
else if(a[y].l==x)
else
continue;
}a[a[x].l].r=a[x].r;
a[a[x].r].l=a[x].l;
if(flag)op=3-op;
if(op==2)
else}}
if(flag)else k=1;
int id=a[0].r;
long long ans=0;
while(k<=n)
printf("case %d: %lld\n",++t,ans);
}}
B 一行盒子
description 你有一行盒子,從左到右依次編號為1,2,3,n。你可以執行四種指令 1 x y表示把盒子x移動到盒子y左邊 如果x已經在y的左邊則忽略此指令 2 x y表示把盒子x移動到盒子y右邊 如果x已經在y的右邊則忽略此指令 3 x y表示交換盒子x和y的位置。4 表示反轉整條鏈。指令...
csu 1329 一行盒子
一行盒子 crawling failed submit status practice csu 1329 description 你有一行盒子,從左到右依次編號為1,2,3,n 你可以執行四種指令 1 x y表示把盒子 x移動到盒子 y左邊 如果 x已經在 y的左邊則忽略此指令 2 x y表示把盒子...
做一行愛一行
2013年9 月30日13 04 34 地點 公司 筆者 小菜 it界高手很多,謙虛進步自己 目前適合 android iphone 在除錯階段 內容 今天是九月的最後一天了,也沒有太多的心思的編寫 了,看看這個月的工作效率,確實不是很高。最近也在看一本書,可能很多的博友都知道這本書的 程式設計師你...