AcWing 1015 摘花生 簡單dp

2021-10-18 04:48:44 字數 1574 閱讀 4310

題目鏈結

hello kitty想摘點花生送給她喜歡的公尺老鼠。

她來到一片有網格狀道路的矩形花生地(如下圖),從西北角進去,東南角出來。

地里每個道路的交叉點上都有種著一株花生苗,上面有若干顆花生,經過一株花生苗就能摘走該它上面所有的花生。

hello kitty只能向東或向南走,不能向西或向北走。

問hello kitty最多能夠摘到多少顆花生。

輸入格式

第一行是乙個整數t,代表一共有多少組資料。

接下來是t組資料。

每組資料的第一行是兩個整數,分別代表花生苗的行數r和列數 c。

每組資料的接下來r行資料,從北向南依次描述每行花生苗的情況。每行資料有c個整數,按從西向東的順序描述了該行每株花生苗上的花生數目m。

輸出格式

對每組輸入資料,輸出一行,內容為hello kitty能摘到得最多的花生顆數。

資料範圍

1≤t≤100,

1≤r,c≤100,

0≤m≤1000

輸入樣例:

222

1134

2323

4165

輸出樣例:

8

16

思路:

從數字三角形變形而來

f[i][j]表示從(1,1)走到(i,j)的所有路線的最大值

集合劃分為:最後一步是從上面下來和最後一步是從左邊過來

邊界情況:當在左邊和最右邊時,只有一種方案,但是可以用多餘的全零行和全零列替代

答案:

#include

#include

#define ll long long

#define ull unsigned long long

#define inf 0x3f3f3f3f3f3f3f3f

#define pii pair

#define pll pair

#define pb push_back

#define eps 1e-6

const

int mod =

1e9+7;

const

int n =

1e5+10;

const

int m =

1e3+10;

using

namespace std;

int r,c;

int dp[m]

[m];

int mp[m]

[m];

void

solve()

}for

(int i=

1;i<=r;i++)}

cout<

[c]<

intmain()

10 15解題報告

測 100 裸的spfa 裸得連讀入優化都不能打 表示不想打 哪怕只要複製 測 70 在考試的時候推出了只需要從前往後一步一步推而不需要考慮順序所以做出暴力 正解應該是用乙個類似於字首和的玩意讓區間的取反時間變為o 1 include include include include include ...

1015考試總結

先通覽一遍題面 第一題估計是數論,第二題估計是dp或者區間操作,第三題估計是資料結構 首先第一題最關鍵的性質是n n n m,也即是說可以一列一列的轉移,每隔n列個數相同 然後一開始想錯了,想成之後都是第一行個數 8 30碼完第一題第乙個版本 方法有問題 8 40碼完第一題第二個版本 暴力 對拍,發...

10 15考試反思

t1 衣服 首先這題很顯然是個貪心,我們考慮如何貪心。我們看顏色種類,最多只有四種,所以我們考慮開4個優先佇列,把所有衣服上的顏色都推到優先佇列裡,比如衣服1有123三個顏色,就把衣服1的價值推到編號為123的佇列中。然後將詢問離線,每次取當前這個所需要的顏色的隊首元素,然後對於這個衣服,我們拿過了...