Uva 12657 (雙向鍊錶

2021-09-11 06:10:53 字數 679 閱讀 1121

最後要求輸出奇數字數的和,記錄操作4的次數和n的奇偶即可表示出答案

用雙向鍊錶來表示關係

#include#include#includetypedef long long ll;

int righta[100005],lefta[100005];

void link(int l,int r) //l<--->r

using namespace std;

int main()

righta[0]=1;lefta[0] = n;//將0->1->2...->n->0這樣連起來

int op,x,y,inv = 0;//inv來標記鍊錶是否被操作4反轉過 根據inv來判斷op為1、2時的操作 和輸出時的順序

while(m--)

else if(op == 2)

else if(op == 3)

else }}

}int b = 0;

ll ans = 0;

for(int i= 1;i<=n;i++)

if(inv && n%2==0) ans = (ll)n*(n+1)/2-ans;

printf("case %d: %lld\n",++kase,ans);

}return 0;

}

uva12657 雙向鍊錶

題目大意 給你n個盒子,分別標號為1 n 有下面4種操作 1 x y 表示將x移到y的左邊 2 x y 表示將y移到y的右邊 3 x y 表示交換x與y的位置 4 表示將1 n所有的盒子反序。要你求經過m次操作之後,所有奇數字置的盒子標號之和。解題思路 大體的說一下 裡有詳細注釋 當n是奇數時,操作...

Uva 12657 移動盒子(雙向鍊錶)

你有一行盒子,從左到右依次編號為1,2,3,n。可以執行以下4種指令 1 x y表示把盒子x移動到盒子y左邊 如果x已經在y的左邊則忽略此指令 2 x y表示把盒子x移動到盒子y右邊 如果x已經在y的右邊則忽略此指令 3 x y表示交換盒子x和y的位置。4 表示反轉整條鏈。指令保證合法,即x不等於y...

Uva 12657 移動盒子(雙向鍊錶)

你有一行盒子,從左到右依次編號為1,2,3,n。可以執行以下4種指令 1 x y表示把盒子x移動到盒子y左邊 如果x已經在y的左邊則忽略此指令 2 x y表示把盒子x移動到盒子y右邊 如果x已經在y的右邊則忽略此指令 3 x y表示交換盒子x和y的位置。4 表示反轉整條鏈。從操作1,2來看,需要有乙...