無聊遊戲(博弈 思維 數學推導 模糊模擬)

2021-09-25 18:14:03 字數 2194 閱讀 2090

問題 b: 無聊遊戲

時間限制: 1 sec  記憶體限制: 128 mb

提交: 96  解決: 18

[提交] [狀態] [命題人:admin]

題目描述

小n和小a在玩這樣的乙個遊戲:給定初始數列q,小n先把某個字首(可以為空)的數字全部乘上−a,小a再把某個字尾(可以為空)的數字全部乘上−b,小n想讓最後所有數的和盡量大,而小a想讓最後所有數的和盡量的小。

因為小a無比聰明絕對不會失誤,所以小n想找到某個方法使得最後所有數的和盡量大,請幫助小n求出最大的值是多少吧。

輸入第一行三個正整數n,a,b,表示數列的長度和小n小a乘的數。

第二行有n個整數表示數列q。

輸出輸出一行乙個整數s,表示最後數列的和的最大值。

複製樣例資料

3 1 1

-1 -2 -3

樣例輸出

0
提示

如果小n修改前0個數,那麼小a修改後0個數,數列是,和為−6。

如果小n修改前1個數,那麼小a修改後0個數,數列是,和為−4。

如果小n修改前2個數,那麼小a修改後0個數或後3個數,數列是或,和為0。

如果小n修改前3個數,那麼小a修改後3個數,數列是,和為−6。

最後答案是max=0。

對於50%的資料,有n≤5000。

對於70%的資料,有n≤100000。

對於100%的資料,有n≤1000000,1≤a,b≤100,∣qi∣≤109。

sum是字首和

對於小n修改前p個數,小a如何修改能使所有數的和盡量小呢?很明顯,你並不能清楚的知道小a要如何修改(廢話)

但是,小a的修改無非就以下幾種情況

設小n修改到p位置,小a修改到q位置(1<=q<=n)

1.p要使這個式子最小,那麼就要使sum[q-1]最小,因為p2.p<=q,整理可得-a*(1+b)*sum[q-1]+b*(1+a)*sum[p]-b*sum[n]

要使這個式子最小,那麼就要使sum[q-1]最大,因為1<=q<=p,所以0<=q-1<=p-1可以注意到假設的時候只說了q的範圍,並沒有說p的範圍,

首先p屬於[1,n]沒有問題,很明顯p=0的時候,用字首和求出來的也沒問題,所以上述式子中的p的範圍是[0,n],也就是說包括了小n修改的字首是空的情況

但是並不能包括小a修改的字尾為空的時候,因為小a修改的那段區間的值是用sum[n]-sum[x],即式子是在小a必修改的情況小推出來的,但是小a也可以不修改

3.小a不修改-a*sum[p]+sum[n]-sum[p]

那麼哪一種能讓和最小呢,這幾種情況取最小值唄

所有最小值的最大值就是答案

關於模糊問題,這幾天做題也遇到過幾道

1.小車過線問題,後面的車可能會被前面的車所限制,那麼最後一輛車到底會被哪輛車為首的「車隊」限制呢?咱也不會求

假設是第i輛車為首限制的,那麼可以求出乙個時間,列舉每乙個i,時間最長那個就是答案

具體問題看這吧

#includeusing namespace std;

typedef long long ll;

const int n=1e6+5;

ll sum[n];

ll minsum[n];//minsum[i]表示[i,n-1]內最小的字首和

ll maxsum[n];//maxsum[i]表示[0,i]內最大的字首和

int n,a,b;

inline ll f1(int p)

inline ll f2(int p)

inline ll f3(int p)

int main()

maxsum[0]=0;

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

maxsum[i]=max(maxsum[i-1],sum[i]);

minsum[n]=1e18;

for(int i=n-1;i>=0;i--)

minsum[i]=min(minsum[i+1],sum[i]);

ll ans=-1e18;

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

else if(i==0)

else

}printf("%lld\n",ans);

return 0;

}

取石頭遊戲 博弈論 數學規律

兩個足夠聰明的人玩輪流取石頭的遊戲,誰取到最後乙個石頭誰就贏了,他們一次只能取1個 3個 7個或 8個石頭,寫一程式判斷 n個石頭時先取的人是輸還是贏。輸入格式 多組輸入,乙個整數 n,其值不超過 10000000。輸出格式 如果先取的人贏,請以單獨一行輸出 1,否則輸出0。輸入樣例 1 10300...

博弈分析(取石子遊戲的數學問題)

取石子問題 有一種很有意思的遊戲,就是有物體若干堆,可以是火柴棍或是圍棋子等等均可。兩個人輪流從堆中取物體若干,規定最後取光物體者取勝。這是我國民間很古老的乙個遊戲,別看這遊戲極其簡單,卻蘊含著深刻的數學原理。下面我們來分析一下要如何才能夠取勝。一 巴什博奕 bash game 只有一堆n個物品,兩...

問題 穀神的賭博遊戲 數學思維 排列組合

neuq 的穀神要和我賭乙個遊戲 穀神要求我隨機在紙上寫出整數集合 n 是整數 的乙個排列 即不重複的隨機寫出從 1 到 3n 1 的所有整數 並且要求在我寫的過程中,從我寫的第乙個數開始一直加到我正在寫的數的總和不被 3 整除。如果我能寫出來符合要求的乙個排列,那麼我就贏得遊戲。那麼問題來了,我贏...