D Slime 貪心,思維

2021-10-07 08:23:12 字數 2222 閱讀 9660

模擬一

下,比如

4個

數模擬一下,比如4個數

模擬一下,比

如4個數a,

b,c,

da,b,c,d

a,b,c,

d ⅰ .b

吃c,吃

d,然後

a吃b,

最後a能

力是a−

b+c+

dⅰ.b吃c,吃d,然後a**,最後a能力是a-b+c+d

ⅰ.b吃c,

吃d,然

後a**

,最後a

能力是a

−b+c

+d ⅱ.a

吃b,吃

c,然後

d吃a,

最後d能

力是d+

c+b−

aⅱ.a**,吃c,然後d吃a,最後d能力是d+c+b-a

ⅱ.a**,

吃c,然

後d吃a

,最後d

能力是d

+c+b

−a 可以發

現減號至

少有1個

,加號至

少有1個

可以發現減號至少有1個,加號至少有1個

可以發現減號

至少有1

個,加號

至少有1

個 如 果你

認真去構

造,會發

現只要滿

足有減號

和加

號如果你認真去構造,會發現只要滿足有減號和加號

如果你認真去

構造,會

發現只要

滿足有減

號和加號任意

一種情況

的能力值

都可以構

造出來.

任意一種情況的能力值都可以構造出來.

任意一種情況

的能力值

都可以構

造出來.至於

為什麼一

定有加號

和減號.

..加號

因為第一

步是q−

w至於為什麼一定有加號和減號...加號因為第一步是q-w

至於為什麼一

定有加號

和減號.

..加號

因為第一

步是q−

w q 是正

數,w是

負數,那

麼以後不

管是減去

還是被減

,q和w

都是異號

的q是正數,w是負數,那麼以後不管是減去還是被減,q和w都是異號的

q是正數,w

是負數,

那麼以後

不管是減

去還是被

減,q和

w都是異

號的 所以把

陣列a排

序,正數

就加上,

負數就減

去\color所以把陣列a排序,正數就加上,負數就減去

所以把陣列a

排序,正

數就加上

,負數就

減去 如果全

是負數說

明我們始

終在減,

這時候要

加上最大

的負

數如果全是負數說明我們始終在減,這時候要加上最大的負數

如果全是負數

說明我們

始終在減

,這時候

要加上最

大的負數如果

全是正數

說明我們

始終在加

,這時候

要減去最

小的正數

如果全是正數說明我們始終在加,這時候要減去最小的正數

如果全是正數

說明我們

始終在加

,這時候

要減去最

小的正數

注意特判n==1的情況,很容易考慮不到!!!

#include using namespace std;

#define int long long

const int maxn=500009;

int n,m,ans,w,q,a[maxn];

signed main()

if(q==n) ans-=2*a[1];//至少要減去乙個 ,減最小的

else if(w==n) ans+=2*a[n];//至少要加上乙個,加最大的

cout<}

貪心 思維 列舉

題目大意 左括號和右括號數量相等的個數 思路 從開始列舉,用兩個標記指標,乙個記錄左括號和右括號的數量,出現乙個左括號 出現乙個右括號 出現乙個?號的話我們先把它當成右括號 所以 左括號 但是問號也要記錄下來 所以問號 當 左括號的數量為零的時候說明左括號和右括號的數量相等,所以答案加1,但是如果左...

Recovery 貪心 思維

題目傳送門 點我 題意 給你乙個10字串,1代表奇數個1,0代表偶數個1,請你還原出1最多且二進位制的值最小的矩陣。include using namespace std define max n 65 char r max n c max n 存放行jox,列jox char matrix max...

棧和排序 貪心 思維

題目描述 給你乙個1 n的排列和乙個棧,入棧順序給定 你要在不打亂入棧順序的情況下,對陣列進行從大到小排序 當無法完全排序時,請輸出字典序最大的出棧序列 輸入描述 第一行乙個數n 第二行n個數,表示入棧的順序,用空格隔開,結尾無空格 輸出描述 輸出一行n個數表示答案,用空格隔開,結尾無空格 示例1輸...