小朋友的數字
用動態規劃用fcur[i]表示以座標i為右端點的區間最大和
f[i]表示前i個元素中的區間最大和,也就是特徵值
轉移方程見**
然後求解過程也很簡單
但是注意,簡單加減會導致爆longlong,所以,如果確定f[1]不是最大值,那麼就在過程中,對求出的最大值進行取模,以防爆longlong。
**如下:
#include
#include
#include
#include
using namespace std;
const
int maxn=
1000005
;int n,p;
long
long num[maxn]
;long
long f[maxn]
,fcur[maxn]
;long
long
maxx
(long
long a,
long
long b)
intmain()
for(
int i=
2;i<=n;i++
) f[1]
=num[1]
;for
(int i=
2;i<=n;i++
)long
long cur=f[1]
*2;int flag=1;
for(
int i=
2;i<=n;i++
)else
return0;
} cur=
maxx
(cur,cur+f[i]);
if(flag&&cur>f[1]
)if(flag==0)
}return0;
}
模擬 小朋友的數字
5 997123 45 22157 1 1 1 1 1 1樣例1 樣例2 其實這道題就是一道模擬題,判斷是否為特徵值最優的,然後就可以得出最優的分數即可.include include include include define ll long long using namespace std l...
dp P1982 小朋友的數字
有趣的細節題目 有 n 個小朋友排成一列。每個小朋友手上都有乙個數字,這個數字可正可負。規定每個小朋友的特徵值等於排在他前面 包括他本人 的小朋友中連續若干個 最少有乙個 小朋友手上的數字之和的最大值。作為這些小朋友的老師,你需要給每個小朋友乙個分數,分數是這樣規定的 第乙個小朋友的分數是他的特徵值...
P1982 小朋友的數字
有 nn個小朋友排成一列。每個小朋友手上都有乙個數字,這個數字可正可負。規定每個小朋友的特徵值等於排在他前面 包括他本人 的小朋友中連續若干個 最少有乙個 小朋友手上的數字之和的最大值。作為這些小朋友的老師,你需要給每個小朋友乙個分數,分數是這樣規定的 第乙個小朋友的分數是他的特徵值,其它小朋友的分...