德瑪西亞萬歲

2021-08-15 08:07:16 字數 1356 閱讀 7435

題目描述

德瑪西亞是乙個實力雄厚、奉公守法的國家,有著功勳卓著的光榮軍史。

這裡非常重視正義、榮耀、職責的意識形態,這裡的人民為此感到強烈自豪。

有一天他們想去制裁**的比爾吉沃特,於是派遣了自己最優秀的戰士。

結果比爾吉沃特領土太小,只有長為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表示為高山峻嶺或者深海湖泊...