4809 江哥的dp題c

2022-05-03 10:45:23 字數 1176 閱讀 8942

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** gold

題解有兩個數x,y,一開始x=1,y=1.現給定乙個引數n和乙個陣列p(p1,p2,p3,……,pn),你需要按以下規則操作:

若x≤n,則你需要選擇乙個正整數k,然後將x變為kx,將y變成y*px。

當x>n時,結束操作,你的得分即為y的值,求最大得分。 

輸入描述 input description

第一行乙個正整數n。

接下來一行n個正整數,描述p。

輸出描述 output description

輸出一行乙個整數,描述答案。

樣例輸入 sample input

1 2 3 4 5 6 7 8 9 10

樣例輸出 sample output

資料範圍及提示 data size & hint

k為你自己選定的乙個定值。

測試點編號        資料範圍

1,2,3                   n≤15

4,5,6,7              n≤50000

8,9,10               n≤10^6

分類標籤 tags 點此展開 

ac**:

#include#include

#include

#include

#define ll long long

using

namespace

std;

inline

const

intread()

while(ch>='

0'&&ch<='9')

return x*f;

}const

int n=1e6+1

;ll p[n/100

];double

dp[n];

intn,a[n],t[n];

int s=1,cnt=1

;int

main()

dp[i]+=log(a[i]);

}for(;s;s=t[s])

}cout

0')<5)

}

江哥的DP題(C)

題目描述 有兩個數x y,一開始x 1 y 1,給定乙個整數n和乙個陣列p p1 p2 p3 pn 並按以下規則操作 1 x n,選擇乙個正整數k,然後將x變為k x,將y變成y px 2 x n,結束操作,得分為y 現詢問最大得分。輸入描述 第一行輸入乙個正整數n 第二行輸入n個正整數,表示陣列p...

江哥的DP題(A)

題目描述 給定乙個長度為n的序列a a1 a2 a3 an 取k個互不相同的元素,使得 1 兩兩元素互不相鄰 2 元素之和最大。輸入描述 第一行輸入兩個正整數n k 第二行輸入n個整數,表示序列a中的元素。輸出描述 輸出乙個整數,表示最大和。樣例輸入 樣例1 7 33 5 7 1 9 10 7 樣例...

CODE VS 江哥的DP題a

原題 先來一波江哥的解題報告殺 這種方法十分的高深莫測,所以我們換乙個容易理解的 f i,j 表示前i個選j個,且第i個必選,那麼就是江哥的轉移方程 p.s 但是不會字首和優化!顯然,這樣的方法只能獲得30分,資料十分的坑,那麼優化如下 f i,j,0 表示前i個裡面選j個且第i個不選 f i,j,...