P1879 [USACO06NOV]玉米田Corn Fields

状压dp水题

看到$n,m<=12$,肯定是状压鸭

先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了

 #include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
const int p=1e9;
int n,m,a[],f[][];
int t[][],len[];
int mod(int a){return a<p?a:a-p;}
void prepare(){
for(re int i=;i<=n;++i)
for(re int j=;j<(<<m);++j){
if((j&(j<<))||(j&(j>>))||(j&a[i])) continue;
t[i][++len[i]]=j;//合法的存起来
}
}
int main(){
scanf("%d%d",&n,&m); int q;
for(re int i=;i<=n;++i)
for(re int j=;j<m;++j)
scanf("%d",&q),a[i]=(a[i]<<)+(q^);//转存二进制并取反(有利于后面的筛)
prepare();
for(re int i=;i<=len[];++i) f[][t[][i]]=;
for(re int i=;i<=n;++i)
for(re int j=;j<=len[i-];++j)
for(re int k=;k<=len[i];++k){
if(t[i-][j]&t[i][k]) continue;//不合法
f[i][t[i][k]]=mod(f[i][t[i][k]]+f[i-][t[i-][j]]);
}
int ans=;
for(re int i=;i<=len[n];++i) ans=mod(ans+f[n][t[n][i]]);
printf("%d",ans);
return ;
}

最新文章

  1. 游标的使用——mysql
  2. 零基础如何系统学习Java Web
  3. 多MAVEN项目部署到tomcat中_之使用DBUG进行单步调试
  4. PHP下使用强大的imagick轻松生成组合缩略图
  5. Elasticsearch 安装与启动
  6. c++基础 使用智能指针
  7. Bootstrap页面布局19 - BS提示信息
  8. Cannot retrieve definition for form bean null on action错误
  9. Ajax大文件切割传输
  10. [Hive - LanguageManual] Select base use
  11. 使用Angularjs和Vue.js对比
  12. Retinex图像增强算法代码
  13. AI应用开发实战
  14. MYSQL 比较集
  15. DetNet: A Backbone network for Object Detection 笔记
  16. shopex-百度爬虫抓取过于频繁导致php-cgi占用CPU过高的解决办法
  17. 老王带你走过 Kafka 入门教程
  18. Docker系列之Docker容器(读书笔记)
  19. java常量类编译问题
  20. 1、ECMAScript 6 简介

热门文章

  1. 如何提高AJAX客户端响应速度
  2. 【Thinkphp5 】部署nginx时nginx.conf配置文件修改
  3. LNMP一键安装包phpMyAdmin无法正常登录,提示:您的Session已过期,请再次登录。
  4. LeetCode——Pascal&#39;s Triangle II
  5. BluePrint和ORM
  6. R中的各种概率统计分布
  7. POI各Jar包的作用(转)
  8. wampserver3 集成环境 启动Apache失败
  9. Linux创建Python虚拟环境
  10. 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决