USACO 2006 November Gold Corn Fields

题目描述:

Farmer John has purchased a lush new rectangular pasture composed of M by N 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.

输入格式:

* Line 1: Two space-separated integers: M and N

* Lines 2..M+1: Line i+1 describes row i of the pasture with N space-separated integers indicating whether a square is fertile (1 for fertile, 0  for infertile)

输出格式:

* Line 1: One integer: the number of ways that FJ can choose the squares modulo 100,000,000.

样例输入:

2 3
1 1 1
0 1 0

样例输出:

9

提示:

【样例解释】

Number the squares as follows:

1 2 3

4

There are four ways to plant only on one squares (1, 2, 3, or 4),

three ways to plant on two squares (13, 14, or 34), 1 way to plant

on three squares (134), and one way to plant on no squares. 4+3+1+1=9.

【数据规模】

1<=M<=12;1<=N<=12

时间限制:1000ms
空间限制:256MByte

又水了一道题,地图记得反着存就好了。。。别忘了%%%kcz!!!

唉,最近kcz在玩pku的游戏挑战赛,我们这些小蒟蒻只有刷水题的份了,QAQ——

#include<bits/stdc++.h>
#define ll long long
#define kcz 100000000
using namespace std; ll f[][ << ] , m , n , maxn;
ll s [][]; ll check(ll now , ll down)
{
if((down << ) & down || (down >> ) & down) return ;
for(ll i=;i<m;i++)
{
ll ce = << i;
if(now & ce && down & ce) return ;
}
return ;
} ll find(ll pos , ll val)
{
for(ll i=;i<m;i++)
{
ll ce = << i;
if(val & ce && s[pos][i]) return ;
}
return ;
} int main(){
cin >> n >> m;
for(ll i=;i<=n;i++)
for(ll j=;j<m;j++)
{ scanf("%lld",&s[i][j]);
s[i][j] ^= ;
}
maxn = << m;
f[][] = ;
for(ll i=;i<n;i++)
for(ll j=;j<maxn;j++)
{
if(f[i][j])
{
for(ll k=;k<maxn;k++)
if(check(j , k) && find(i + , k))
f[i + ][k] += f[i][j];
}
}
ll ans = ;
for(ll i=;i<maxn;i++)
{
ans += f[n][i];
ans %= kcz;
}
cout << ans;
}

USACO 2006 November Gold Corn Fields的更多相关文章

  1. USACO 2006 November Gold Corn Fields /// 状压 oj23941

    题目大意: 输入n m 接下来n行m列 0表示不能种玉米 1表示能 要求种玉米位置的上下左右四连通区域不能种玉米 输出方案数 Sample Input 2 31 1 10 1 0 Sample Out ...

  2. USACO 2006 November Gold

    POJ 3253 Fence Repair STL堆操作 我想说,STL里堆是我目前见到最蛋疼的操作. #include <cstdio> #include <cstring> ...

  3. 【USACO 2006 November Gold】Corn Fields

    [题目链接] 点击打开链接 [算法] 状压DP [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 12 #def ...

  4. USACO 2006 November Gold Fence Repair /// 贪心(有意思)(优先队列) oj23940

    题目大意: 输入N ( 1 ≤ N ≤ 20,000 ) :将一块木板分为n块 每次切割木板的开销为这块木板的长度,即将长度为21的木板分为13和8,则开销为21 接下来n行描述每块木板要求的长度Li ...

  5. 【usaco 2006 feb gold】 牛棚安排

    终于自己独立做出来一道题QAQ然而本校数据实在太水不能确定我是不是写对了... 原题: Farmer John的N(1<=N<=1000)头奶牛分别居住在农场所拥有的B(1<=B&l ...

  6. [Poj3261] [Bzoj1717] [后缀数组论文例题,USACO 2006 December Gold] Milk Patterns [后缀数组可重叠的k次最长重复子串]

    和上一题(POJ1743,上一篇博客)相似,只是二分的判断条件是:是否存在一段后缀的个数不小于k #include <iostream> #include <algorithm> ...

  7. USACO 2008 November Gold Cheering up the Cows /// MST oj24381

    题目大意: 输入n,p:n个点,p条路 接下来n行输入c[]:在各个点需要花费的时间 接下来p行输入u,v,w:u点到v点的路需要花费时间w 求经过所有点且最后回到起点的最少花费时间 https:// ...

  8. POJ 3254. Corn Fields 状态压缩DP (入门级)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9806   Accepted: 5185 Descr ...

  9. poj 3254 Corn Fields

    http://poj.org/problem?id=3254 Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

随机推荐

  1. VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三

    目录 目录 前文列表 VixDiskLib 虚拟磁盘库 VixDiskLib_GetMetadataKeys VixDiskLib_ReadMetadata 获取虚拟磁盘元数据 VixDiskLib_ ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_12_静态static关键字修饰成员变量

    创建一个学生类 定义成员变量,无参构造,全参构造.成员变量的getter和setter 所在教室必须是一样的,定义所在教室 下面来创建两个学生 只给one的room赋值了.two的教室并没有赋值.都输 ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_14-抽象的概念

    先来了解什么叫做抽象 父类有个计算面积的方法,但是不同的图形计算面积的方式是不一样的.所以这里的计算面积的方法就是个抽象的方法. 只有到具体的子类里面才能去实现具体的计算面积的方法 动物类是父类.有吃 ...

  4. CDN分发

    CDN 是Content Delivery Network,即内容分发网络. 未完待续..

  5. Android 静态广播和动态广播接收顺序

    Android广播有两个很重要的要素: 1 广播 - 用于发送广播 有序广播  -  被广播接收器接收后,可被终止,无法往下继续传达.         典型代表:短信广播 普通广播  -  发送至每一 ...

  6. 16/7/7_PHP-面向对象关键词

    转载地址: http://blog.sina.com.cn/s/blog_5182b171010092fb.html PHP5 是一具备了大部分面向对象语言的特性的语言,比PHP4 有了很多的面向对象 ...

  7. Java ——数组 选择排序 冒泡排序

    本节重点思维导图 数组 public static void main(String[] args) { int a ; a=3; int[] b; b = new int[3];//强制开辟内存空间 ...

  8. OO第四单元单元总结

    目录 1.本单元两次作业的架构设计 2.四个单元中架构设计及OO方法理解的演进 3.测试理解与实践的演进 4.课程收获 5.给课程的改进建议 1.本单元两次作业的架构设计 第四单元的两次作业,我的表现 ...

  9. yolov--7--解决报错:/bin/sh: 1: nvcc: not found make: *** [obj/convolutional_kernels.o] Error 127

    1.配置darknet配置darknet出现错误: qhy@qhy-desktop:~/darknet$ make cleanqhy@qhy-desktop:~/darknet$ make……gcc ...

  10. vue集成汉字转拼音或提取首字母

    需求:             有时我们为了节省用户的维护量,需要根据中文生成出相应的拼音和缩写 解决:            此方法是利用汉字和Unicode编码对应找到相应字母 一.编写汉字和编码 ...