洛谷 P2051 中國象棋 簡單dp

2022-05-07 22:42:14 字數 536 閱讀 4300

一點都不簡單的簡單dp。

還是從舊行轉移到新行,而不是考慮新行從哪些舊行轉移吧。

#includeusing namespace std;

typedef long long ll;

namespace combinatorics

return res;

}//3. 乘法逆元 快速冪+費馬小定理,要求p必須是質數 (依賴1. 快速冪)

inline ll inv_p(ll n,ll p=mod)

};using namespace combinatorics;

//注意需要init(),必要時修改常量

ll dp[101][101][101]={};

//前i行中,j列放了1個,k列放了2個的方法數

int main()}}

//puts("");

ll ans=0;

for(int j=0;j<=m;j++)

}printf("%lld\n",ans);

}

洛谷 P2051 中國象棋

orz stdcall 首先要想出來,每行最多只能放兩個棋子,這是顯然的 於是決策就是一行一行地處理 30分的做法就是裸的列舉,暴搜,列舉這一行放 放幾個 然後想到了壓位dp,按3進製表示當前棋盤的狀態,即某一列沒有棋子,或者有乙個,兩個棋子,能過50分 接著可以發現,棋子的順序是無所謂的,並不需要...

洛谷P2051 中國象棋

這次小可可想解決的難題和中國象棋有關,在乙個n行m列的棋盤上,讓你放若干個炮 可以是0個 使得沒有乙個炮可以攻擊到另乙個炮,請問有多少種放置方法。大家肯定很清楚,在中國象棋中炮的行走方式是 乙個炮攻擊到另乙個炮,當且僅當它們在同一行或同一列中,且它們之間恰好 有乙個棋子。你也來和小可可一起鍛鍊一下思...

洛谷P2051 中國象棋

題意 在乙個n行m列的棋盤上,讓你放若干個炮,可以是0個,使得沒有乙個炮可以攻擊另乙個炮,請問有多少種放置方法。題解 因為每一行每一列的炮的數量 2 考慮開dp陣列儲存有幾列放了乙個炮,有幾列放了兩個炮 dpi k 表示放了前i行,有j列是有乙個棋子,有k列是有2個棋子的合法方案數 空的序列就是合法...