時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:3 描述
問題是我們經常見到的整數劃分,給出兩個整數 n , m ,要求在 n 中加入m - 1 個乘號,將n分成m段,求出這m段的最大乘積
輸入
第一行是乙個整數t,表示有t組測試資料
接下來t行,每行有兩個正整數 n,m ( 1<= n < 10^19, 0 < m <= n的位數);
輸出輸出每組測試樣例結果為乙個整數佔一行
樣例輸入
2111 2
1111 2
樣例輸出
11121
**經典題目
上傳者tc_胡仁東
#pragma comment(linker, "/stack:1024000000,1024000000")
#include#include#include#include#include#include#include#include#include#include#define l(x) (x<<1)
#define r(x) (x<<1|1)
#define mid(x,y) ((x+y)>>1)
#define bug printf("hihi\n")
#define eps 1e-8
typedef long long ll;
using namespace std;
#define inf 0x3f3f3f3f
#define n 105
char c[100];
int va[n];
ll sum[n][n];
int n,k;
ll dp[n][n];
void inint()
void dp()
{ int i,j;
memset(dp,0,sizeof(dp));
dp[0][0]=1;
for(i=1;i<=k;i++)
{dp[i][i]=dp[i-1][i-1]*va[i];
for(int j=i+1;j<=n;j++)
for(int t=i-1;t
南陽理工oj 整數劃分(DP)
問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積輸入 第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0 m n的位數 輸出 輸出每組測試樣例結果為乙個整數佔一行 樣例輸入 2 ...
區間dp 整數劃分nyoj746
問題是我們經常見到的整數劃分,給出兩個整數 n m 要求在 n 中加入m 1 個乘號,將n分成m段,求出這m段的最大乘積 輸入第一行是乙個整數t,表示有t組測試資料 接下來t行,每行有兩個正整數 n,m 1 n 10 19,0 m n的位數 輸出輸出每組測試樣例結果為乙個整數佔一行 樣例輸入 211...
整數劃分(區間DP)
題意 給你乙個大數n,和乙個m,問你在n總插入m 1個乘號,被分成m段 使最後結果最大。題解 想遞推方程 dp i j 前 i 個數被分成 j 段 dp i j max dp i j dp k j 1 a k 1 j k 在這裡列舉指的是在前i個數被分成j段的情況下,在1 i中再插入乙個乘號。所以得...