NOIP2018模擬賽 小P的西洋棋

2021-09-11 04:33:35 字數 2767 閱讀 4203

題目描述

小p迷上了一種新西洋棋,這種西洋棋的棋盤是兩個序列,乙個序列是自己的部分,另乙個序列是對手的。在序列中,每一格都是乙個士兵,士兵們的初始戰鬥力不同。 在新西洋棋種獲勝方式是這樣的:有q次對決,每次對決雙方序列的兩個區間,如果小p在這個區間內的士氣和大於對手在這個區間內的士氣和,那麼小p需要說出他在這個區間內的士氣和。如果他的士氣和大於對手的士氣和,那麼他能得一分。在q次對決之後,雙方得分較多的為獲勝方。

在新西洋棋種有3種可以影響戰局的操作:

魔術師:通過膜法將自己棋盤部分的第i個士兵與第j個士兵交換。

**家:通過高昂的歌聲使自己棋盤部分的l到r的區間內士兵士氣值加dis。

盜賊:盜取對手第i個士兵的士氣值,並把它的士氣值加到己方第i個士兵上。

小p帶著自己的好友小y來玩新西洋棋。

輸入格式

第一行兩個整數,n,m代表棋盤是2*n的,影響戰局的運算元與對決數之和為m個

接下來兩行,每行n個整數,分別代表自己和對手的初始士氣值。

接下來m行,每行是下面有以下幾種情況:

mig n x y:小"n"將自己棋盤部分的第x個士兵與第y個士兵交換,例如mig y 2 5

mus n x y z:小"n"將自己棋盤部分的x到y的區間內士兵士氣值加z,例如mus y 1 3 2

sto n x y:小"n"盜取對手第x個士兵的士氣值,並把它的士氣值加到己方第y個士兵上,例如sto p 1 5

pk x y:對決雙方區間[x,y]

輸出格式

對於每次對決都出一次。

每輸出一次包含兩部分:

第一部分表示獲勝的是小p還是小y,若是小p則輸出p,若是小y則輸出y。

第二部分輸出獲勝方的區間和。

兩個部分輸出以乙個空格隔開,例如y 7

最後再輸出最終獲勝方,輸出獲勝者"is winner!",例如"little y is winner!"

如果雙方平局,則輸出"five five open"。

樣例

input1

5 5

1 3 2 5 1

1 3 2 5 1

mig p 3 2

mus y 1 4 2

pk 1 3

sto p 1 5

pk 2 5

output1

y 12

y 17

little y is winner!

input2

5 10

33702 7831 40840 14560 27164

13691 20836 5480 2948 11791

sto p 5 1

pk 2 5

pk 1 5

mig p 5 3

sto p 4 1

mig y 2 5

mus p 2 3 148

sto p 4 3

pk 1 5

pk 1 1

output2

p 90395

p 135888

p 139132

p 48441

little p is winner!

資料範圍與提示

對於百分之三十的資料: 1<=n,m<=1000。

對於另外百分之二十的資料: 沒有sto和mig操作。

對於全部資料:1<=n,m<=200005。

線段樹板子題、調了半天bug,發現有個 == 寫成 = 了orz

#includeusing namespace std;

typedef long long ll;

const int maxn = 2e5+7;

struct node

}tree[2][maxn<<2];

ll flag,a[2][maxn];

void push_up(int x)

void push_down(int x)

}void build(int x,int l,int r)else tree[flag][x].val = a[flag][l];

}void update(int x,int l,int r,ll val)

}ll query(int x,int l,int r)

}char op[10],per[10];

int ans[2] = ;

void pk(ll &t1,ll &t2,int x,int y)

void sto(int x,int y)

void mig(int x,int y)

int main()else if(op[0] == 's')else if(op[1] == 'i')else

}if(ans[0] == ans[1])return 0*printf("five five open\n");

printf("little %c is winner!\n",ans[0]>ans[1]?'p':'y');

return 0;

}

NOIP2018模擬賽2018 10 18 輕功

description 題目背景 尊者神高達進入了基三的世界,作為乙個 mmorpg 做任務是必不可少的,然而跑地圖卻令人十分不爽。好在基三可以使用輕功,但是尊者神高達有些手殘,他決定用梅花樁練習輕功。題目描述 一共有 n 個木樁,要求從起點 0 開始,經過所有梅花樁,恰好到達終點 n,尊者神高達一...

NOIP2018模擬賽2018 10 18 開荒

description 題目背景 尊者神高達作為乙個萌新,在公升級路上死亡無數次後被乙隻大黃嘰帶回了師門。他加入師門後發現有無窮無盡的師兄弟姐妹,這幾天新副本開了,尊者神高達的師門作為乙個 pve師門,於是他們決定組織一起去開荒。題目描述 師門可以看做以 1 為根的一棵樹,師門中的每乙個人都有一定的...

NOIp2018模擬賽三十六

好久沒打模擬賽了。今天一樣是兩道國集,一道bzoj題 成績 13 0 95 108 a題開始看錯題了。導致樣例都沒看懂,結果xfz提醒我後我理解了乙個我自認為正確的題意 事實證明我和xfz都錯了qwq 然後瞎打了乙個線段樹,結果只有13分。c題一看就是乙個大平衡樹,開始手打了100 行發現自己肯定調...