給定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...