状压dp初步。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define N 600
  6. #define yql 1000000000
  7. int n,m,top,a[N],v[N],dp[][N],now[N];
  8. inline bool lineck(int x){return (x&(x<<))?:;}
  9. inline void init(){
  10. top=;int sum=<<n;
  11. for(int i=;i<sum;i++)if(lineck(i))v[++top]=i;
  12. }
  13. inline bool fit(int x,int k){return (x&now[k])?:;}
  14. inline int jcnt(int x){
  15. int cnt=;
  16. while(x){++cnt;x&=(x-);}
  17. return cnt;
  18. }
  19. inline int read(){
  20. int f=,x=;char ch;
  21. do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
  22. do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
  23. return f*x;
  24. }
  25. int main(){
  26. while(scanf("%d%d",&m,&n)!=EOF){
  27. init();memset(dp,,sizeof(dp));
  28. for(int i=;i<=m;i++){
  29. now[i]=;int x;
  30. for(int j=;j<=n;j++){x=read();if(!x)now[i]+=(<<(n-j));}
  31. }
  32. for(int i=;i<=top;i++)if(fit(v[i],))dp[][i]=;
  33. for(int i=;i<=m;i++)for(int k=;k<=top;k++){
  34. if(!fit(v[k],i))continue;
  35. for(int j=;j<=top;j++){
  36. if(!fit(v[j],i-))continue;
  37. if(v[j]&v[k])continue;
  38. dp[i][k]=(dp[i][k]+dp[i-][j])%yql;
  39. }
  40. }
  41. int ans=;
  42. for(int i=;i<=top;i++)ans=(ans+dp[m][i])%yql;
  43. printf("%d\n",ans);
  44. }
  45. }

【POJ3254】coinfield的更多相关文章

  1. 【poj3254】Corn Fields 状态压缩dp

    AC通道:http://vjudge.net/problem/POJ-3254 [题目大意] 农夫约翰购买了一处肥沃的矩形牧场,分成M*N(1<=M<=12; 1<=N<=12 ...

  2. 【poj3254】 Corn Fields

    http://poj.org/problem?id=3254 (题目链接) 题意 给出一块n*m的田地,有些能够耕种,有些不能.要求将牛两两不相邻的放在田中,牛的个数至少为1个.问有多少种放法. So ...

  3. 【POJ3254】Corn Fields(状压DP)

    题意: 一个M x N矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻.问有多少种放牛方案( ...

  4. 【POJ3254】Corn Fields 状压DP第一次

    !!!!!!! 第一次学状压DP,其实就是运用位运算来实现一些比较,挺神奇的.. 为什么要发“!!!”因为!x&y和!(x&y)..感受一下.. #include <iostre ...

  5. 【POJ3254】Corn Fields

    http://poj.org/problem?id=3254 题意:给你一块n*m(0<n,m<=12)的地图,其中有的方格是肥沃的(用1表示),有的方格是贫瘠的(用0表示).现在约翰要在 ...

  6. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  7. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  8. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  9. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

随机推荐

  1. SPOJ - PHRASES

    题意: 给n个字符串,求出最长的子串.使得子串在每个字符串中不重叠地至少出现2次.输出子串长度. 题解: 用后缀数组求出height数组,之后二分答案.check时对height数组进行分组,并维护每 ...

  2. 51NOD 1565:模糊搜索——题解

    http://www.51nod.com/onlineJudge/questionCode.html#problemId=1565&noticeId=445588 有两个基因串S和T,他们只包 ...

  3. HTTPS证书生成方法,也适用于APP

    步骤: 一.登录服务器,创建ioscert目录 cd ~/servers/APP mkdir ioscert 二.cd到ioscert目录下,执行以下命令: 1.openssl genrsa -out ...

  4. dubbox小demo

    概述: 我们建立两个web项目,一个是service负责提供服务,另一个是web项目负责调用服务. 两个项目都是 maven Project 项目 生产者项目: 项目中主要就是: pom文件,引入相关 ...

  5. CodeBlocks调试功能快捷教程

    在程序设计中,单步调试能够跟踪程序的执行流程.跟踪过程中,还可以观察变量的变化,从而发现其中存在的问题.单步执行除了可以帮助我们发现设计的程序中存在的问题,对于初学者,还可以帮助我们理解语言的机制. ...

  6. hibernate、mybatis、beetsql的学习

    先推荐两篇文章吧: https://my.oschina.net/xiandafu/blog/617542 http://blog.csdn.net/xiandafu/article/details/ ...

  7. bzoj 4069 [Apio2015]巴厘岛的雕塑 dp

    [Apio2015]巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 494  Solved: 238[Submit][Status][Dis ...

  8. android AsyncTask介绍 AsyncTask和Handler对比

    1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可 ...

  9. generatorConfiguration配置文件及其详细解读

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE generatorConfiguratio ...

  10. Spring Boot 配置定时任务

    package com.zooper.demo; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j. ...