一本通1593 例 2 牧場的安排

2022-05-08 02:00:09 字數 2601 閱讀 3376

時間限制: 1000 ms         記憶體限制: 524288 kb

原題來自:usaco 2006 nov. gold

farmer john 新買了一塊長方形的牧場,這塊牧場被劃分成 m

'>m

行 n'>

n 列 (1≤m

≤12;1

≤n≤12

'>1≤m≤12;1≤n≤12

),每一格都是一塊正方形的土地。fj 打算在牧場上的某幾格土地裡種上美味的草,供他的奶牛們享用。遺憾的是,有些土地相當的貧瘠,不能用來放牧。並且,奶牛們喜歡獨佔一塊草地,於是 fj 不會選擇兩塊相鄰的土地,即:沒有哪兩塊草地有公共邊。當然,fj 還沒有決定在哪些土地上種草。

作為乙個好奇的農場主,fj 想知道,如果不考慮草地的總塊數,那麼,一共有多少種種植方案可供他選擇。當然,把新的牧場荒廢,不在任何土地上種草,也算一種方案。請你幫 fj 算一下這個總方案數。

第 1'>

1 行:兩個正整數 m

'>

m 和 n

'>

n,用空格隔開;

第 2'>2

到 m+

1'>

m+1 行:每行包含 n

'>n

個用空格隔開的整數,描述了每塊土地的狀態。輸入的第 i+1

'>

i+1 行描述了第 i

'>

i 行的土地。所有整數均為 0

'>

0 或 1

'>1

,1'>

1 表示這塊土地足夠肥沃,0

'>

0 則表示這塊地上不適合種草。

第 1'>

1 行:輸出乙個整數,即牧場分配總方案數除以 10

8'>

108  的餘數。

2 3  

1 1 1

0 1 0

9
樣例說明

按下圖把各塊土地編號:

1 2 3  

0 4 0

只開闢一塊草地有 4

'>

4 種方案:選 1,2

,3,4

'>

1,2,3,4 中的任一塊。開闢兩塊草地的話,有 3

'>3

種方案:13,14

'>

13,14 以及 34

'>

34。選三塊草地只有一種方案:134

'>

134。再加把牧場荒廢的那一種,總方案數為 4+3

+1+1

=9'>

4+3+1+1=9 種。1≤

n,m≤

12'>

1≤n,m≤12。1≤

n,m≤

12'>sol:這是一道狀壓dp(廢話),由於我借鑑了自己國王的思路,光榮的變成最差解(時間和空間都是最劣的),dp[i][j][k]表示到第i行,放了j個牧草,這行的狀態為k,暴力預處理+超暴力轉移

#include using

namespace

std;

typedef

intll;

inline ll read()

while

(isdigit(ch))

return (f)?(-s):(s);

}#define r(x) x=read()inline

void

write(ll x)

if(x<10

)

write(x/10

); putchar((x%10)+'0'

);

return;}

inline

void

writeln(ll x)

#define w(x) write(x),putchar(' ')

#define wl(x) writeln(x)

const

int mod=100000000

;int n,m,dp[15][12*12+5][(1

<<12)+5

];int zhuangt[15],ges[(1

<<12)+5

];bool jud[(1

<<12)+5],can[(1

<<12)+5][(1

<<12)+5

];int

main()

}for(i=0;i

for(i=0;i

(jud[i])

if(bo) can[i][j]=1

; }

}for(i=0;i

;

for(i=2;i<=m;i++)}}

}int ans=0

;

for(i=0;i<=(n*m);i++)

}wl(ans);

return0;

}/*input

2 3

1 1 1

0 1 0

output

9input

1 10

1 1 1 1 1 1 1 1 1 1

output

144*/

view code

一本通 1 1 例 1 活動安排

題目link 貪心即可,將活動按右端點排序,排序後能選則選。o n 證明 首先對於乙個前面都為最優序列的前提下,如果對於乙個活動 a 使它發生是一種最優序列,然後再對於另乙個活動 b 它的結束時間比 a 早,並且開始時間也滿足條件,那麼根據貪心就可以選它,因為它既合法又是一種最優序列。1 inclu...

一本通1608 例 3 任務安排 3

時間限制 1000 ms 記憶體限制 524288 kb 有 n n 個任務排成乙個序列在一台機器上等待執行,它們的順序不得改變。機器會把這 n n 個任務分成若干批,每一批包含連續的若干個任務。從時刻 0 0 開始,任務被分批加工,執行第i個任務所需的時間是 t i ti。另外,在每批任務開始前,...

一本通1664 例 2 取石子遊戲 2

題目描述 有一種有趣的遊戲,玩法如下 玩家 2 人 道具 n 堆石子,每堆石子的數量分別為 x1 x2 xn 規則 遊戲雙方輪流取石子 每人每次選一堆石子,並從中取走若干顆石子 至少取 1 顆 所有石子被取完,則遊戲結束 如果輪到某人取時已沒有石子可取,那此人算負。假如兩個遊戲玩家都非常聰明,問誰勝...