<USACO06NOV>玉米田Corn Fields
状压emm
二进制真有趣
来自dp垃圾的欣喜
Description
- 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 <= M <= 12; 1 <= N <= 12)个格子。他想在那里的一些格子中种植美味的玉米。遗憾的是,有些格子区域的土地是贫瘠的,不能耕种。精明的 FJ 知道奶牛们进食时不喜欢和别的牛相邻,所以一旦在一个格子中种植玉米,那么他就不会在相邻的格子中种植,即没有两个被选中的格子拥有公共边。他还没有最终确定哪些格子要选择种植玉米。作为一个思想开明的人,农民 John 希望考虑所有可行的选择格子种植方案。由于太开明,他还考虑一个格子都不选择的种植方案!请帮助农民 John 确定种植方案总数。
Input
- Line 1: 两个用空格分隔的整数 M 和 N
- Lines 2:M+1: 第 i+1 行描述牧场第i行每个格子的情况, N 个用空格分隔的整数,表示 这个格子是否可以种植(1 表示肥沃的、适合种植,0 表示贫瘠的、不可种植)
Output
- Line 1: 一个整数: FJ 可选择的方案总数 除以 100,000,000 的余数。
Sample Input
- 2 3
1 1 1
0 1 0
Sample Output
9
Hint
- 【样例说明】
给可以种植玉米的格子编号:
1 2 3
4
只种一个格子的方案有四种 (1, 2, 3, 或 4),种植两个格子的方案有三种 (13, 14, 或 34),种植三个格子的方案有一种 (134),还有 一种什么格子都不种。 4+3+1+1=9。#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=;
int m,n;
int dp[][],field[][],judge[],f[]; int main()
{
int i,j,k,maxx;
//freopen("cowfood.in","r",stdin);
//freopen("cowfood.out","w",stdout);
scanf("%d%d",&m,&n);
for(i=;i<=m;i++)
for(j=;j<=n;j++)scanf("%d",&field[i][j]);
for(i=;i<=m;i++)
for(j=;j<=n;j++)f[i]=(f[i]<<)+field[i][j];//注意.f[i]里表示一行的0101010的分布情况!!所以 左移一位加上field(里面是0或1)就可以啦!!!
maxx=<<n;//表示一行n个0(最前面的1不会用到w ..这个自行意会 感觉这样说不对..
for(i=;i<maxx;i++) judge[i]=((i&(i<<))==) && ((i&(i>>))==);//看清括号quq左移右移判断 如果 返回都为0 说明满足条件 即不同时为1 //返回均为0时,judge为1
dp[][]=;
for(i=;i<=m;i++)
for(j=;j<maxx;j++)//二进制的 一行的可能方式枚举
if(judge[j] && ((j&f[i])==j))//当之前的判断满足.想一想..f[i]要怎样满足条件..???emm..
{ // 就..随便列个式子写下 会发现.!对应要为1时 f[i] 也要为1 而j该位为0时 f[i]为0or1都可以.!
for(k=;k<maxx;k++) if((k&j)==) dp[i][j]=(dp[i][j]+dp[i-][k])%N;//当 k和j没有1相邻时..即可以是在在一起的两列时,dp[i][j]加上前一行&列也就是这个dp[i-1][k]emm就是这时的方案数啦
}
int ans=;
for(i=;i<=maxx;i++)ans+=dp[m][i],ans%=N;
printf("%d\n",ans); return ;
}
<USACO06NOV>玉米田Corn Fields的更多相关文章
- P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
P1879 [USACO06NOV]玉米田Corn Fields 状压dp水题 看到$n,m<=12$,肯定是状压鸭 先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了 #include& ...
- 状压DP【洛谷P1879】 [USACO06NOV]玉米田Corn Fields
P1879 [USACO06NOV]玉米田Corn Fields 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形 ...
- C++ 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
没学状压DP的看一下 合法布阵问题 P1879 [USACO06NOV]玉米田Corn Fields 题意:给出一个n行m列的草地(n,m<=12),1表示肥沃,0表示贫瘠,现在要把一些牛放在 ...
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields 题解
P1879 [USACO06NOV]玉米田Corn Fields 题目描述 Farmer John has purchased a lush new rectangular pasture compo ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
洛谷P1879 [USACO06NOV]玉米田Corn Fields \(f[i][j]\) 表示前 \(i\) 行且第 \(i\) 行状态为 \(j\) 的方案总数.\(j\) 的大小为 \(0 \ ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields (状态压缩DP)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- P1879 [USACO06NOV]玉米田Corn Fields
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- 洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压DP】题解+AC代码
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- [USACO06NOV]玉米田Corn Fields(动态规划,状态压缩)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
随机推荐
- SpringMVC在使用JSON时报错信息为:Content type 'application/json;charset=UTF-8' not supported
直接原因是:我的(maven)项目parent父工程pom.xml缺少必要的三个jar包依赖坐标. 解决方法是:在web子模块的pom.xml里面添加springMVC使用JSON实现AJAX请求. ...
- C++类的访问控制关键字
public:修饰的成员变量和函数,可以在类的内部和类的外部被访问. private:修饰的成员变量和函数,只能在类的内部被访问,不能在类的外部被访问. protected:修饰的成员变量和函数,只能 ...
- java内存区域与内存溢出异常(2)
3.本地方法栈 本地方法栈与虚拟机栈作用相同,不同的是虚拟机栈为java方法服务,本地方法栈为native方法服务,本地方法栈会抛出StackOverFlowError和OutOfMemoryErro ...
- sqlserver 数据库分组后取第一条数据
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!大家可以看看是否对自己有帮助,点击查看教程. 比如查询用户某一天最后一笔交易后的账户余额 SELECT *( SELECT *, row_num ...
- 剑指offer【11】- 矩形覆盖
题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 在分析前不知道是什么序列,所以先看了n=1,n=2,n=3,n= ...
- ubuntu下安裝程序的三個方式
引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. apt-get方法 使用 ...
- 学习数论 HDU 4709
经过杭师大校赛的打击,明白了数学知识的重要性 开始学习数论,开始找题练手 Herding HDU - 4709 Little John is herding his father's cattles. ...
- 给c盘瘦身
火狐浏览器缓存 C:\Users\lenovo\AppData\Local\Mozilla\Firefox\Profiles\5nk022sw.default\cache2\entries C:\U ...
- python 并发执行
并发执行, 精简代码. 适用python2 和python3 # -*- encoding:utf-8 -*- from threading import Thread from multiproce ...
- TPO4-2 Cave Art in Europe
Perhaps, like many contemporary peoples, Upper Paleolithic men and women believed that the drawing o ...