日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压dp】

發(fā)布時(shí)間:2025/3/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压dp】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

P1879 [USACO06NOV]玉米田Corn Fields
時(shí)間限制 1.00s
內(nèi)存限制 125.00MB
題目描述
Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares are infertile and can’t be planted. Canny FJ knows that the cows dislike eating close to each other, so when choosing which squares to plant, he avoids choosing squares that are adjacent; no two chosen squares share an edge. He has not yet made the final choice as to which squares to plant.

Being a very open-minded man, Farmer John wants to consider all possible options for how to choose the squares for planting. He is so open-minded that he considers choosing no squares as a valid option! Please help Farmer John determine the number of ways he can choose the squares to plant.

農(nóng)場主John新買了一塊長方形的新牧場,這塊牧場被劃分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一塊正方形的土地。John打算在牧場上的某幾格里種上美味的草,供他的奶牛們享用。

遺憾的是,有些土地相當(dāng)貧瘠,不能用來種草。并且,奶牛們喜歡獨(dú)占一塊草地的感覺,于是John不會(huì)選擇兩塊相鄰的土地,也就是說,沒有哪兩塊草地有公共邊。

John想知道,如果不考慮草地的總塊數(shù),那么,一共有多少種種植方案可供他選擇?(當(dāng)然,把新牧場完全荒廢也是一種方案)

輸入格式
第一行:兩個(gè)整數(shù)M和N,用空格隔開。

第2到第M+1行:每行包含N個(gè)用空格隔開的整數(shù),描述了每塊土地的狀態(tài)。第i+1行描述了第i行的土地,所有整數(shù)均為0或1,是1的話,表示這塊土地足夠肥沃,0則表示這塊土地不適合種草。

輸出格式
一個(gè)整數(shù),即牧場分配總方案數(shù)除以100,000,000的余數(shù)。

輸入輸出樣例
輸入 #1 復(fù)制
2 3
1 1 1
0 1 0
輸出 #1 復(fù)制
9

解題思路:
假設(shè)dp[i][j]dp[i][j]dp[i][j]為第iii行在jjj狀態(tài)下前iii行的方案數(shù),因此,對(duì)于此題,我們只需要遍歷一下每行的狀態(tài)(對(duì)于每行,我們將一行的種植情況放在一起作為一個(gè)二進(jìn)制數(shù),用十進(jìn)制存儲(chǔ),對(duì)于每行的狀態(tài),用1表示該塊種草,0表示不種),即從0 ~ ((1<<m)-1)遍歷每行的狀態(tài),同時(shí)在遍歷的過程中判斷狀態(tài)是否合法,即狀態(tài)是否在不能種草的地方種了草,即對(duì)應(yīng)位狀態(tài)上為1而初始要求為0,并將合法的狀態(tài)存到動(dòng)態(tài)數(shù)組中保存起來,從第二行開始,每行的狀態(tài)還需考慮前一行的情況,要求其在對(duì)應(yīng)位不能同時(shí)為1,即當(dāng)前狀態(tài)與前一行狀態(tài)取與后結(jié)果為0,因此就可以寫出動(dòng)態(tài)轉(zhuǎn)移方程
dp[h][sta]=(dp[h][sta]+dp[h?1][arr[h?1][i]])%moddp[h][sta]=(dp[h][sta]+dp[h-1][arr[h-1][i]])\%moddp[h][sta]=(dp[h][sta]+dp[h?1][arr[h?1][i]])%mod
sta為當(dāng)前hhh行的狀態(tài),dp[h?1][arr[h?1][i]]dp[h-1][arr[h-1][i]]dp[h?1][arr[h?1][i]]為遍歷的前一行的狀態(tài)。

代碼:

#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstdlib> #include <cstring> #include <map> #include <stack> #include <queue> #include <vector> #include <bitset> #include <set> #include <utility> #include <sstream> #include <iomanip> using namespace std; typedef long long ll; typedef unsigned long long ull; #define inf 0x3f3f3f3f #define rep(i,l,r) for(int i=l;i<=r;i++) #define lep(i,l,r) for(int i=l;i>=r;i--) #define ms(arr) memset(arr,0,sizeof(arr)) //priority_queue<int,vector<int> ,greater<int> >q; const int maxn = (int)1e5 + 5; const ll mod = 1e8; ll dp[20][8000]; ll ans; int a[20][20]; vector<int> arr[20]; int n,m; bool ju1(int sta,int h) {for(int i=1;i<=m;i++) {if(a[h][i]==0&&(sta&(1<<(i-1)))==(1<<(i-1))) {return false;}}return true; } int num[20]; bool ju2(int sta) {ms(num);int id=0;while(sta) {num[++id]=(sta&1);sta>>=1;}for(int i=1;i<id;i++) {if(num[i]==1&&num[i+1]==1) {return false;}}return true; } void fun(int sta,int h) {for(int i=0;i<arr[h-1].size();i++) {if((sta&arr[h-1][i])==0) {dp[h][sta]=(dp[h][sta]+dp[h-1][arr[h-1][i]])%mod;//cout<<dp[h][sta]<<endl;}} } int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);scanf("%d %d",&n,&m);rep(i,1,n) {rep(j,1,m) {scanf("%d",&a[i][j]);}}for(int i=0;i<(1<<m);i++) {if(ju1(i,1)&&ju2(i)) {arr[1].push_back(i);dp[1][i]=1;}if(n==1) {ans=(ans+dp[1][i])%mod;}}for(int i=2;i<=n;i++) {for(int j=0;j<(1<<m);j++) {if(ju1(j,i)&&ju2(j)) {fun(j,i);arr[i].push_back(j);}if(i==n) {ans=(ans+dp[i][j])%mod;//cout<<ans<<endl;}}}/*for(int i=1;i<=n;i++) {for(int j=0;j<(1<<m);j++) {cout<<dp[i][j]<<" ";}cout<<endl;}*/printf("%lld\n",ans);return 0; } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压dp】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 五十路母 | 国精产品一区一区三区mba下载 | 久久精品视频91 | 超碰精品在线观看 | 久久久久久久久久久久久女过产乱 | 久久久精品免费 | 青娱乐精品视频 | 91蜜臀精品国产自偷在线 | 久久好色| 先锋成人 | 大象传媒成人在线观看 | 久久五月激情 | 国产又粗又黄视频 | www日本xxx | 亚洲国产精品久久久久婷蜜芽 | √天堂 | 杨幂国产精品一区二区 | 日韩在线观看中文字幕 | 久久久久久久久久久久久久久 | 久久久久逼 | 国产精品5 | 一本一道无码中文字幕精品热 | 亚洲精品久久久久久久蜜桃 | 久久人体视频 | 屁屁影院国产第一页 | 人妻在客厅被c的呻吟 | 免费h漫禁漫天天堂 | 亚洲乱码av | 爱爱视频网址 | 日本三级中国三级99人妇网站 | 女人叉开腿让男人桶 | 草草福利视频 | 日韩在线精品强乱中文字幕 | 毛片视频免费播放 | 日本韩国欧美一区 | 日本免费在线播放 | 国产免费三片 | 欧美三级在线看 | 亚洲jizzjizz | 91久久精品视频 | 欧美一区二区三区爽爽爽 | 免费观看日韩 | 在线播放小视频 | 九色综合网 | 91欧美亚洲 | 张柏芝亚洲一区二区三区 | 亚洲www视频 | 国产猛男猛女超爽免费视频 | 懂色tv| 日日夜夜中文字幕 | 爱情岛论坛自拍亚洲品质极速最新章 | 国产中文字幕乱人伦在线观看 | 绿帽单男| 国产天堂第一区 | 在线看一级片 | 色偷偷免费费视频在线 | 人妻换人妻a片爽麻豆 | 香蕉视频三级 | 国产女教师一区二区三区 | 欧美黄色特级片 | 日韩 欧美 国产 综合 | 亚洲天堂美女视频 | 动漫美女靠逼 | 四虎精品一区二区三区 | 在线观看免费高清视频 | 久久久精品久久久 | 伊人网在线视频 | 亚洲av无码成人精品区 | 中文字幕欧美亚洲 | 夜夜操天天干 | www.三级.com | 成人片免费视频 | 大陆熟妇丰满多毛xxxⅹ | 免费黄网在线观看 | 色偷偷网 | 婷婷丁香激情 | 中文字幕天堂av | 美女精品在线 | 亚洲区成人 | 国产精品无码久久久久高潮 | 国产精品一区二区久久久 | 丰满人妻一区二区三区精品高清 | 欧美交换配乱吟粗大25p | 成人性爱视频在线观看 | 三级免费 | 自拍偷拍视频在线 | 国产精品区一区二区三 | 狠狠搞视频 | 亚洲精品理论片 | 丝袜美腿中文字幕 | 国产婷婷色| 精品人妻一区二区三区麻豆91 | av色图片 | 911国产视频| 韩国成人在线 | 韩国一区二区三区在线观看 | 国产短视频一区 | sesese99| 久久成人综合 |