題目描述
德瑪西亞是乙個實力雄厚、奉公守法的國家,有著功勳卓著的光榮軍史。
這裡非常重視正義、榮耀、職責的意識形態,這裡的人民為此感到強烈自豪。
有一天他們想去制裁**的比爾吉沃特,於是派遣了自己最優秀的戰士。
結果比爾吉沃特領土太小,只有長為n寬為m共計n*m塊土地,其中有些土
地標記為0表示為高山峻嶺或者深海湖泊,英雄們無法在其中站立,只有標
記為1的土地才能容納乙個英雄。德瑪西亞的英雄們戰鬥時有乙個特點,他
們不希望隊友站在自己旁邊顯得很曖昧。請問最多能有多少種安排德瑪西
亞英雄的方法?
輸入描述:
輸入包含多組測試資料;
每組資料的第一行包含2個整數n和m (n <= 12, m <= 12 ),之間用空格隔開;
接下來的n行,每行m個數,表示n*m的比爾吉沃特領土。
輸出描述:
輸出乙個整數n代表安排應用的方法。
(答案取膜100000000)
輸入
3 3
1 1 1
0 1 1
1 0 0
輸出
解題思路
據說是一道狀態dp的模板題,找了份模板理解了一下。。。
**
#include
#include
#include
#define mod 100000000
using
namespace
std;
int n,m,num;
int kind[5000];
int dp[5000][20];
intmap[22];//每一行的狀態
int main()
memset(dp,0,sizeof(dp));
num=0;
for(i=0;i<=((1
<1);i++)
if((i&(i<<1))==0)
kind[++num]=i;//記錄士兵不相鄰的站隊方式
for(j=1;j<=num;j++)
for(i=2;i<=n;i++)
for(j=1;j<=num;j++)
}int ans=0;
for(i=1;i<=num;i++)//前n行所有可能的情況
(ans+=dp[i][n])%=mod;
cout
0;}
德瑪西亞萬歲 狀壓dp
德瑪西亞是乙個實力雄厚 奉公守法的國家,有著功勳卓著的光榮軍史。這裡非常重視正義 榮耀 職責的意識形態,這裡的人民為此感到強烈自豪。有一天他們想去制裁 的比爾吉沃特,於是派遣了自己最優秀的戰士。結果比爾吉沃特領土太小,只有長為n寬為m共計n m塊土地,其中有些土 地標記為0表示為高山峻嶺或者深海湖泊...
NC15034 德瑪西亞萬歲(狀壓dp)
德瑪西亞是乙個實力雄厚 奉公守法的國家,有著功勳卓著的光榮軍史。這裡非常重視正義 榮耀 職責的意識形態,這裡的人民為此感到強烈自豪。有一天他們想去制裁 的比爾吉沃特,於是派遣了自己最優秀的戰士。結果比爾吉沃特領土太小,只有長為n寬為m共計n m塊土地,其中有些土 地標記為0表示為高山峻嶺或者深海湖泊...
牛客每日練習 德瑪西亞萬歲,求最值,小牛再戰
德瑪西亞是乙個實力雄厚 奉公守法的國家,有著功勳卓著的光榮軍史。這裡非常重視正義 榮耀 職責的意識形態,這裡的人民為此感到強烈自豪。有一天他們想去制裁 的比爾吉沃特,於是派遣了自己最優秀的戰士。結果比爾吉沃特領土太小,只有長為n寬為m共計n m塊土地,其中有些土 地標記為0表示為高山峻嶺或者深海湖泊...