(陣列模仿雙向鍊錶)Boxes in a Line

2021-09-11 07:08:07 字數 2494 閱讀 1743

給定n個盒子,從左到右分別標號為1~n;有下面4種操作:

「1 x y」 表示將編號為x的盒子移到編號為y的左邊;

「2 x y」 表示將編號為x移到編號為y的右邊;

「3 x y」 表示交換編號為x和y的位置;

「4」 表示將1~n所有的盒子反序。

要你求經過m次操作之後,所有奇數字置的盒子標號之和。

for example, if n = 6, after executing 1 1 4, the line becomes 2 3 1 4 5 6.

then after executing 2 3 5, the line becomes 2 1 4 5 3 6. 

then after executing 3 1 6, the line becomes 2 6 4 5 3 1.

then after executing 4, then line becomes 1 3 5 4 6 2

input

有多組資料,第一行兩個整數n和m,(n,m <=100000)

接下來m個操作,如題目描述,輸入合法x≠y

ouput

操作完成後,輸出奇數字置上的編號之和。

6 41 1 4

2 3 5

3 1 6

46 3

1 1 4

2 3 5

3 1 6

100000 1

44 1

3 3 4

case 1: 12

case 2: 9

case 3: 2500050000

case 4: 5

題解 :我寫這個的時候,wa了兩發,錯在這個樣例:

2 2

3 1 2

3 2 1

我寫了個輸出,每次輸出整個序列

#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define eps (1e-8)

#define max 0x3f3f3f3f

#define u_max 1844674407370955161

#define l_max 9223372036854775807

#define i_max 2147483647

#define re register

#define pushup() tree[rt]=max(tree[rt<<1],tree[rt<<1|1])

#define nth(k,n) nth_element(a,a+k,a+n); // 將 第k大的放在k位

#define ko() for(int i=2;i<=n;i++) s=(s+k)%i // 約瑟夫

#define ok() v.erase(unique(v.begin(),v.end()),v.end()) // 排序,離散化

using namespace std;

inline int read()

while(c >= '0' & c <= '9') x = x * 10 + c - '0', c = getchar();

return x * f;

}typedef long long ll;

const double pi = atan(1.)*4.;

const int inf = 0x3f3f3f3f;

const ll inf = 0x3f3f3f3f3f3f3f3fll;

const int m=63;

const int n=1e5+5;

int n,m,id,x,y,t=1;

struct funf[n];

void init()

else if(i==n)

else

}}void deal(int x)

void l(int x,int y)

void r(int x,int y)

int main()

else

}else if(id==2)

else

}else if(id==3)

else

}else

}else

else

}else}}

else

/* if(!flag)

printf("\n");

}else

printf("\n");

}*/}

printf("case %d: ",t++);

ll sum=0;

if(!flag)

}else

}printf("%lld\n",sum);

}return 0;

}​

mysql 雙向鍊錶 雙向鍊錶

雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...

雙向鍊錶(鍊錶)

雙向鍊錶 每個節點包含指向後繼節點的指標和指向前驅節點的指標。繼承關係圖 實體圖 duallinklist.h duallinklist 雙向鍊錶類模板 成員變數 node 節點實體 m header 頭節點 m length 鍊錶長度 m step 步進長度 m current 當前節點前乙個節點...

雙向鍊錶 3 反轉雙向鍊錶

雙向鍊錶的反轉過程,可以參考下面的例圖。a 原始雙向鍊錶 b 反轉後的雙向鍊錶 下面是乙個用於反轉雙向鍊錶的簡單方法。所需要做的事情就是交換每個節點的前向指標和後向指標,然後調整鍊錶的頭指標和尾指標。include struct node 對鍊錶進行反轉 void reverse node head...