在 \(n\) 行 \(m\) 列的棋盤上,放若干個炮可以是 \(0\) 個,使得沒有任何乙個炮可以攻擊另乙個炮。請問有多少種放置方法,中國像棋中炮的攻擊方式大家應該很清楚吧,需要隔一顆棋子攻擊。
如果是下一行乙個不放,那麼就直接轉移就可以了。
如果是下一行放乙個,那麼可能在j列中選擇乙個位置去放,也可能在k個位置中選擇乙個去放。
如果下一行可以放兩個,那麼可以在j列中選兩個,或者在k列中選兩個,或者j列中乙個,k列中乙個
//dp[i][j][k] 表示現在放到了第i行,還有j列可以放1個,k列可以放兩個
/* cinput
1 3*/
/*output7*/
#include using namespace std;
#define int long long
inline int read()
const int maxn = 105, mod = 9999973;
int n, m, ans = 0, col[maxn], row[maxn], dp[maxn][maxn][maxn];
void dfs(int cur)
}signed main() }}
int ans = 0;
for (int i = 0; i <= m; i++)
for (int j = 0; j <= m - i; j++)
ans = (ans += dp[n][i][j]) % mod;
cout << ans << endl;
}
2023年9月15日晚間測試 T1
t1 題目描述 一開始你有乙個數s,你可以通過兩種操作改變這個值 1.給這個數加a 2.給這個數乘b 問最少多少步操作可以使s變成t。輸入格式 一行4個數,分別代表s,t,a,b。資料範圍 118118 218這道題比較噁心了,看到1018的資料範圍可能就會想到這是不是數學,然後搜刮腦子裡那少的可憐...
晚間測試3 B 單 single
單車聯通大街小巷.這就是出題人沒有寫題目背景的原因.對於一棵樹,認為每條邊長度為 1 每個點有乙個權值 a i dis u,v 為點 u 到 v 的最短路徑的邊數.dis u,u 0 對每個點求出乙個重要程度.點 x 的重要程度 b x 定義為其他點到這個點的距離乘上對應的點權再求和.即 b x a...
如何保障晚間的高效工作
寫程式很費腦子。沒錯,是這樣的。白天忙乎一天之後,晚上需要接著寫 這種情景在創業型團隊中格外明顯 但是,經過了白天的 消耗 後,晚上的精神無法專注,容易分神,效率明顯下降。長時間的呆在室內,會增長抑鬱情緒。大家可能會有這樣的感受,在週末,本想在家好好放鬆放鬆,哪都不去,就宅在屋子裡。在電腦前娛樂了一...