noip提高組2000 乘積最大

2022-08-13 09:00:18 字數 829 閱讀 4423

要寫高精才能過的luogu:

用long long就能水過的codevs:

首先先來說dp部分,因為k<=6,因此可以列舉斷點位置。

sum[i][j]表示原數的第i位到第j位構成的數字,f[i][l]表示前i個數字劃分l次時的最大值。

設當前劃分l段,j為斷點位置,對於確定的i與j,斷點到i的值只能為sum[j+1][i],斷點之前劃分的段數也是確定的,為l-1,斷點之前劃分l-1段能得到的最大值也是在之前已經計算出來的,所以將其相乘,檢查能否更新f[i][l]即可。

#include#include

struct

numa;

num f[

55][55],sum[55][55

];char s[55

];int

k;void

print(num x)

num getmax(num x,num y)

returnx;}

num mul(num x,num y)

for(int i=1;i<=x.w+y.w+2;i++)

}returnt;}

intmain()

}for(int i=1;i<=a.w;i++) f[i][0]=sum[1

][i];

for(int l=1;l<=k;l++)

}print(f[a.w][k]);

return0;

}

NOIP2000 乘積最大

題二 乘積最大 22分 問題描述 今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數...

Noip 2000 乘積最大

今年是國際數學聯盟確定的 2000 世界數學年 又恰逢我國著名數學家華羅庚先生誕辰90周年。在華羅庚先生的家鄉江蘇金壇,組織了一場別開生面的數學智力競賽的活動,你的乙個好朋友xz也有幸得以參加。活動中,主持人給所有參加活動的選手出了這樣一道題目 設有乙個長度為n的數字串,要求選手使用k個乘號將它分成...

noip2000 乘積最大

題目 乘積最大 無高精度 思路 f i,k 表示前i個數劃分為k個部分獲得的最大乘積。num i,j 表示從i到j的字元拼成的整數。轉移方程 f i,k max 1,i 這一段數由j處被分為 1,j j 1,i 兩段,其中規定 1,j 這一段在之前的操作中已經被分為k 1段。注意邊界條件 f j 1...