qwb與矩陣 DP 輸入掛

2021-08-02 08:32:41 字數 2190 閱讀 5543

qwb與矩陣

time limit: 2 sec memory limit: 128 mb

submit: 1210 solved: 260

[submit][status][web board]

description

做完了辣麼多的數學題,qwb好好睡了一覺。但是他做了乙個夢:

有乙個n*m的矩陣,qwb在這個矩陣的左上角(1,1),終點在右下角(n,m)。

每個格仔中有小錢錢,也可能沒有,還有可能是要交過路費的,並且行走方向必須是靠近終點的方向。

往下走一次只能走一格,往右走一次可以走一格也可以走到當前列數的倍數格。

比如當前格仔是(x,y),那麼可以移動到(x+1,y),(x,y+1)或者(x,y*k),其中k>1。

qwb希望找到一種走法,使得到達右下角時他能夠有最多的小錢錢。

你能幫助他嗎?

input

第一行是測試例數量 t (t<=100),接下來是t組測試資料。

每組測試資料的第一行是兩個整數n,m,分別表示行數和列數(1<=n<=20,1<=m<=10000);

接下去給你乙個n*m的矩陣,每個格仔裡有乙個數字 k (-100<=k<=100)代表小錢錢的數量。 ∑nm<=3,000,000

output

每組資料一行,輸出l先生能夠獲得小錢錢的最大值(可能為負數)。

sample input

1 3 8

9 10 10 10 10 -10 10 10

10 -11 -1 0 2 11 10 -20

-11 -11 10 11 2 10 -10 -10

sample output

52 hint

這道題,注意兩點

1 .對於倍數的處理

2 對於輸入方式的,注意這道題,輸入量100*20*10000。輸入量很大。其實輸入量在1e5的時候就不小了。

和hdu的一道數塔那題很像, 題目鏈結

看**標程

#include

#include

#include

#include

#include

using

namespace

std;

inline

int read()

while('0'

<=ch&&ch<='9')

return x*f;

} //輸入掛

/************************************/

const

int maxn = 10000+10;

const

double eps = 1e-8;

const

int inf =0x3f3f3f3f;

int mp[30][maxn];

int dp[30][maxn];

int main()

}cout

0;}

我的**,dp的方式不同。本質一樣

#include

#include

#include

#include

#include

using

namespace

std;

inline

int read()

while('0'

<=ch&&ch<='9')

return x*f;

} //輸入掛

第一次覺得輸入方式有時候這麼重要。

2116ms 的是用cin

784ms 的是用輸入掛

1388ms 的是用scanf

qwb與矩陣 簡單dp

做完了辣麼多的數學題,qwb好好睡了一覺。但是他做了乙個夢 有乙個n m的矩陣,qwb在這個矩陣的左上角 1,1 終點在右下角 n,m 每個格仔中有小錢錢,也可能沒有,還有可能是要交過路費的,並且行走方向必須是靠近終點的方向。往下走一次只能走一格,往右走一次可以走一格也可以走到當前列數的倍數格。比如...

輸入掛(bzoj 2901 矩陣求和)

很少用輸入掛,以為不超時就好了,但是這題貌似不用過不去啊 只好拿出來用了,當個模板 原理是用getchar 讀入會比用scanf快一些 int read while ch 0 ch 9 x x 10 ch 0 ch getchar return x f time limit 20 sec memor...

2 2 矩陣與向量輸入

函式呼叫的語句格式 冒號表示式與子矩陣提取 variable expression 賦信語句的末尾加乙個分號可以阻止顯示運算結果 保留變數 ans 存放最近一次無賦信變數語句的運算結果 矩陣輸入方法 a l,2,3 4 5,6 7,8 0 其他命令 動態定維 a a 1 2 3 1 2 3 4 ma...