正睿2020普轉提 第六套 遊戲

2022-02-07 13:18:27 字數 1405 閱讀 8801

題目

有一天杜教與睿爸在爭論誰才是\(oi\)界一哥,他們激烈辯論了半天也沒有個結果。

於是毛總想了乙個注意,他製作了乙個遊戲來幫助他們決定勝負。

遊戲規則是這樣的:

遊戲中一共有\(n\)個大小為\(2\)的棧。兩人輪流操作,睿爸先手。

每個人每次可以取出乙個棧頂的元素,獲得對應的收益。具體來說:第\(i\)個棧的棧頂的元素給睿爸的收益是\(a_i\) , 給杜教的收益是\(b_i\) ,棧底的元素給睿爸的收益是\(c_i\) ,給杜教的收益是\(d_i\) 。

同時,雙方由於在這件事上面拱起了大火,所以雙方博弈的目的都是要求自己的收益減去對面的收益最大。

由於雙方都是\(oi\)界扛把子,智慧型過人,所以他們都會採取對自己最優的決策。

睿爸最終想知道玩完遊戲後他的收益減去杜教的收益是多少。

solution

看起來像博弈的貪心。

我們設第\(i\)個元素給先手收益為\(x_i\)(取得的\(a_i\)或\(c_i\)),給後手收益為\(y_i\)(\(b_i\)或\(d_i\))

設先手最後取得元素集合為\(a\),全集為\(u\)

我們對答案進行觀察

\[\begin

ans &= maxx_i -\sum_y_i} \\

&= max (x_i + y_i) - \sum_ y_i}

\end

\]你會發現這個結論是如此顯然。

顯然全集中\(y_i\)的總和是乙個定值,那麼我們的目的就是讓\((x_i + y_i)\)最大。

\((x_i + y_i)\)是啥?是\(a_i + b_i\)或\(c_i + d_i\)

兩者目的相同,接下來考慮一些必然策略。

然後可以先排除所有\(a_i + b_i <= c_i + d_i\)的棧,因為所屬已經確定。

\(\mathrm\)

#include #include const int n = 20010;

int n;

template inline void read(t &s)

template inline void write(t x)

int bb[n], cnt = 0, a = 0, b = 0;

int ans1 = 0, ans2 = 0;

int a, b, c, d;

inline bool cmp(int x, int y)

main()

std ::sort(bb + 1, bb + cnt + 1, cmp);

for (int i = 1; i <= cnt; ++i) i & 1 ? ans1 += bb[i] : ans2 += bb[i];

write(ans1 - b);

return 0;

}

正睿2020普轉提 第六套 塔

題目 睿爸喜歡搭塔塔。睿爸有n 1n 1 n1 個高度h 1h 1 h1 的紅色磚塊,和n 2n 2 n2 個高度為h 2h 2 h2 的藍色磚塊,這些的磚塊的底面和頂面的長寬均相同,且你不能將這些磚塊立體旋轉或者轉動。睿爸可以按照如下方式搭塔 1.每個磚塊要麼可以放在地面上,要麼必須壘在乙個顏色不...

正睿2020普轉提 第六套 串

題目 睿爸喜歡玩串串。睿爸手裡有乙個只有小寫字母組成的串s ss 他希望你在裡面找出乙個字典序最小的子串行t tt 使得去掉子串行t tt的部分剩下的串是t tt的乙個排列。如果無法找到,請輸出 cl btxd y mathrm clbtx dy solution 貪心。對於每一位我們貪心選取合法 ...

正睿2020普轉提 第六套 串

題目 睿爸喜歡玩串串。睿爸手裡有乙個只有小寫字母組成的串 s 他希望你在裡面找出乙個字典序最小的子串行 t 使得去掉子串行 t 的部分剩下的串是 t 的乙個排列。如果無法找到,請輸出 mathrm solution 貪心。對於每一位我們貪心選取合法 字典序最小的 同時盡可能取位置靠前的 字母。乙個方...