Description

题库链接

给你一个 \(0,1\) 矩阵,只准你在 \(1\) 上放物品;并且要满足物品不能相邻。允许空放,问方案数,取模。

\(1\leq n,m\leq 12\)

Solution

状压 \(DP\) 。

记 \(f_{i,t}\) 为处理到第 \(i\) 行时放物品的状态为 \(t\) 的方案数。

若第 \(i\) 行的 \(1\) 的状态为 \(a\) 。显然由于必须放在 \(1\) 上,所以 \(a~and~t = a\) ,其中 \(and\) 为按位与;并且由于同行之间不能相邻,故 \((t>>1)~and~t=0\) 。

枚举的上一行状态为 \(k\) 。显然 \(t~and~k=0\) 。

复杂度为 \(O(n\cdot (2^n)^2)\)

Code

//It is made by Awson on 2018.2.25
#include <bits/stdc++.h>
#define LL long long
#define dob complex<double>
#define Abs(a) ((a) < 0 ? (-(a)) : (a))
#define Max(a, b) ((a) > (b) ? (a) : (b))
#define Min(a, b) ((a) < (b) ? (a) : (b))
#define Swap(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b))
#define writeln(x) (write(x), putchar('\n'))
#define lowbit(x) ((x)&(-(x)))
using namespace std;
const int yzh = 100000000;
const int size = 1<<12;
void read(int &x) {
char ch; bool flag = 0;
for (ch = getchar(); !isdigit(ch) && ((flag |= (ch == '-')) || 1); ch = getchar());
for (x = 0; isdigit(ch); x = (x<<1)+(x<<3)+ch-48, ch = getchar());
x *= 1-2*flag;
}
void print(LL x) {if (x > 9) print(x/10); putchar(x%10+48); }
void write(LL x) {if (x < 0) putchar('-'); print(Abs(x)); } int n, m, a[15], x, f[15][size+5], bin[15]; void work() {
read(n), read(m); bin[0] = 1; for (int i = 1; i <= 12; i++) bin[i] = bin[i-1]<<1;
for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) read(x), a[i] = ((a[i]<<1)|x);
f[0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j < bin[m]; j++)
if ((j == 0 || ((j|a[i]) == a[i])) && (j&(j>>1)) == 0)
for (int k = 0; k < bin[m]; k++)
if ((k == 0 || ((k|a[i-1]) == a[i-1])) && (k&(k>>1)) == 0)
if ((j&k) == 0) f[i][j] = (f[i][j]+f[i-1][k])%yzh;
}
int ans = 0;
for (int i = 0; i < bin[m]; i++) ans = (ans+f[n][i])%yzh;
writeln(ans);
}
int main() {
work(); return 0;
}

[USACO 06NOV]Corn Fields的更多相关文章

  1. USACO 2006 November Gold Corn Fields

    USACO 2006 November Gold Corn Fields 题目描述: Farmer John has purchased a lush new rectangular pasture ...

  2. USACO Corn Fields

    洛谷 P1879 [USACO06NOV]玉米田Corn Fields 洛谷传送门 题目描述 Farmer John has purchased a lush new rectangular past ...

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

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

  4. poj 3254 Corn Fields

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

  5. Corn Fields——POJ3254状态压缩Dp

    Corn Fields Time Limit: 2000MS Memory Limit: 65536K Description Farmer John has purchased a lush new ...

  6. poj3254 Corn Fields (状压DP)

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

  7. [ACM] POJ 3254 Corn Fields(状态压缩)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8062   Accepted: 4295 Descr ...

  8. POJ P3254 Corn fields 【状压dp】

    Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16909 Accepted: 8939 Descript ...

  9. poj3254 Corn Fields 利用状态压缩求方案数;

    Corn Fields 2015-11-25 13:42:33 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10658   ...

随机推荐

  1. java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用

    先来讲解一下Semaphore信号灯的作用:  可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数. 请看下面 ...

  2. Hibernate学习笔记三 多表

    一对多|多对一 表中的表达 实体中的表达 实体代码: package com.yyb.domain; import java.util.HashSet; import java.util.Set; p ...

  3. Beta Scrum

    听说 Beta Scrum Day 1

  4. Alpha冲刺Day6

    Alpha冲刺Day6 一:站立式会议 今日安排: 由张梨贤继续完成前一天委托第三方剩余的内容,并完成委托情况查看这一子模块 由黄腾飞继续完成前一天企业自查风险管理剩余的内容,并完成风险上报这一子模块 ...

  5. Swift - 使用导航条和导航条控制器来进行页面切换并传递数据

    转自:http://www.hangge.com/blog/cache/detail_586.html

  6. Flask 扩展 Flask-RESTful

    Flask路由可以指定HTTP请求方法,并在请求函数中根据不同的请求方法,执行不同的逻辑.这样实现一个Restful的请求已经相当简单了 Flask还有更简便的方法,就是其Flask-RESTful扩 ...

  7. Linux 帳號管理與 ACL 權限設定

    1. Linux 的账号与群组1.1 使用者识别: UID 与 GID1.2 使用者账号:/etc/passwd, /etc/shadow1.3 关于群组: 有效与初始群组. groups, newg ...

  8. 同样是IT培训,为什么人家月薪过万,你才几千,问题在哪?!

    听过一句话"360行,行行转IT",虽然有些夸张,但也不难看出IT行业的火爆程度.从李总理提的"互联网+大数据"开始,中国的这场"互联网+" ...

  9. 《javascript设计模式与开发实践》阅读笔记(16)—— 状态模式

    状态模式 会区分事物内部的状态,事物内部状态的改变往往会带来事物的行为改变.比如电灯的开关是开还是关,在外界的表现就完全不同. 电灯例子 按照常规思路,实现一个电灯就是构造一个电灯类,然后指定一下它的 ...

  10. 总体来说,require_once 肯定要比 require 性能好

    首先,总体来说,require_once 肯定要比 require 性能好. 因为 require 某个文件等同于 "编译 + 执行" 这个文件:require_once 避免了对 ...