COJ 1026 乘積最大 DP 高精度

2021-06-04 17:24:26 字數 2172 閱讀 7467

這題用dp或者dfs均能過。 在coj上看了ahyangyi大神的**,手寫了個bigint的結構體,遂模仿之,果然很好使

典型的dp問題

設w(h,q)表示從h位開始的q位數字組合所成的十進位制數,m(i,j)表示前i位數字串插入j個乘號所得的最大乘積,初始值為:

m(i,0) = w(0,q) ;

動規方程如下所示:

if (j==0) m(i,j) = w(0,i) ;

else if(j>0)

m(i,j) = max ps: 其中 0<= d < i

下標均從0開始

dp版本

/*

id: sdj22251

prog: subset

lang: c++

*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 2000000000

#define maxn 100005

#define eps 1e-10

#define l(x) x<<1

#define r(x) x<<1|1

using namespace std;

struct biginteger

biginteger(string s)

void operator *=(const biginteger &a)

if(tmp[len]) len++;

for(int i = 0; i < len; i++) d[i] = tmp[i];

while(len > 0 && d[len - 1] == 0) len--;

if(!len) d[len++] = 0;

}bool operator <(const biginteger &a)const

void out()

}dp[55][11];

int n, m;

char s[105];

int main()}}

dp[n - 1][m].out();

return 0;

}

dfs版本

/*

id: sdj22251

prog: subset

lang: c++

*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 2000000000

#define maxn 100005

#define eps 1e-10

#define l(x) x<<1

#define r(x) x<<1|1

using namespace std;

struct biginteger

biginteger(string s)

void operator *=(const biginteger &a)

if(tmp[len]) len++;

for(int i = 0; i < len; i++) d[i] = tmp[i];

while(len > 0 && d[len - 1] == 0) len--;

if(!len) d[len++] = 0;

}bool operator <(const biginteger &a)const

void out()

}ans;

int n, k;

char s[105];

void dfs(biginteger t, int m, int x)

for(int i = x ; i < n - m + 1; i++)

}int main()

COJ 1026 乘積最大 DP 高精度

這題用dp或者dfs均能過。在coj上看了ahyangyi大神的 手寫了個bigint的結構體,遂模仿之,果然很好使 典型的dp問題 設w h,q 表示從h位開始的q位數字組合所成的十進位制數,m i,j 表示前i位數字串插入j個乘號所得的最大乘積,初始值為 m i,0 w 0,q 動規方程如下所示...

NOIP 乘積最大(dp

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

dp專題 乘積最大

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