还是那句老话:dp关键在状态;

求有多少种排布方式,是任意两头牛不相邻(有些地方不能放);

不用心,一开始还纠结了半天

和之前USACO上某题方法是一样的,每一行放或不放只有两种情况

把它当作一个二进制数,转化为十进制作为状态则

到第i行第j种状态的方案数为

f[i,j]=sigma f[i-1,k] (j and k=0) 很飘逸的位运算解决了不相邻(可以想一想为什么);

code(代码比较丑陋 )

 const mo=;
var a,f:array[..,..] of longint;
    p,d:array[..] of longint;
    v:array[..] of boolean;
    s,n,m,i,j,k,x,y,t:longint;
    ans:int64;
    ff:boolean; function check(x:longint):boolean;
  begin
    s:=;
    fillchar(p,sizeof(p),);
    while x<> do
    begin
      inc(s);
      p[s]:=x mod ;
      if (p[s]=) then
      begin
        if v[s] then exit(false);
        if (p[s]=p[s-]) then exit(false);
      end;
      x:=x shr ;
    end;
    exit(true);
  end; begin
  readln(n,m);
  t:= shl m-;
  for i:= to n do
  begin
    fillchar(v,sizeof(v),false);
    for j:= to m do
    begin
      read(x);
      if x= then v[j]:=true;
    end;
    for j:= to t do
      if check(j) then
      begin
        inc(d[i]);
        a[i,d[i]]:=j;
      end;
    readln;
  end;
  for i:= to d[] do
    f[,i]:=;
  for i:= to n do
  begin
    for j:= to d[i] do
    begin
      x:=a[i,j];
      for k:= to d[i-] do
      begin
        y:=a[i-,k];
        if x and y= then
          f[i,j]:=(f[i,j]+f[i-,k]) mod mo;
      end;
    end;
  end;
  ans:=;
  for i:= to d[n] do
    ans:=(ans+f[n,i]) mod mo;
  writeln(ans mod mo);
end.

poj3254的更多相关文章

  1. 【poj3254】 Corn Fields

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

  2. poj3254状压DP入门

    G - 状压dp Crawling in process... Crawling failed Time Limit:2000MS     Memory Limit:65536KB     64bit ...

  3. [poj3254]Corn Fields_状压dp

    Corn Fields poj3254 题目大意:给你一个n*m的地,每一块地可以种或不种,两块种过的地不能挨着,可以一块都不种,问所有的种地方案数. 注释:读入用0和1,1<=n,m<= ...

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

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

  5. POJ3254:Corn Fields(状压dp第一发)

    题目:http://poj.org/problem?id=3254 直接上代码吧,刚开始做时主要的问题就是看不懂二进制,有个博客写的太好了,就直接把题解复制在下面了. #include <ios ...

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

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

  7. poj3254(状态压缩DP)

    poj3254 题意 给出一个01矩阵,1表示当前这个位置可以放牛,要求放牛的方案保证牛不能左右或上下相邻,求方案数. 分析 dp[S][i]: 表示到 i 行时的状态S(用二进制数表示),那么状态转 ...

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

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

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

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

  10. 轮廓线DP POJ3254 && BZOJ 1087

    补了一发轮廓线DP,发现完全没有必要从右往左设置状态,自然一点: 5 6 7 8 9 1 2 3 4 如此设置轮廓线标号,转移的时候直接把当前j位改成0或者1就行了.注意多记录些信息对简化代码是很有帮 ...

随机推荐

  1. android系统网络信号强弱参数之ecsq指令参数说明

    ecsq指令参数说明: // For LTE (MT6592) // AT+ECSQ:<sig1>,<sig2>,<rssi_in_qdbm>,<rscp_i ...

  2. [Oracle]Oracle学习小结(1)

    1.查看Oracle数据库中的所有用户: (1)使用具有DBA权限的账户登录数据库: (2)执行select username from dba_users. SQL> conn sys 输入口 ...

  3. 009.EscapeRegExChars

    类型:function 可见性:public 所在单元:RegularExpressionsCore 父类:TPerlRegEx 把转义字符变成原意字符 例如\d意为0~9某个数字,通过此函数转换后则 ...

  4. 转 在无法通过yum下载非标准包时,怎么办

    在CentOS下,我们可以通过yum来下载或更新rpm包,但是标准的源(repository)里只提供一部分的rpm包,虽然大部分情况下,这些包是够用的.但是有时候还是需要下载其他的一些非标准的包,如 ...

  5. Failed to execute command: ""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ResGen.exe" 的一个解决办法

    最近在做wpf项目,期间下了一些源码参考,但是在build时经常遇到下面这种bug: Error 2 Failed to execute command: ""C:\Program ...

  6. CodeBlocks去掉拼写检查

    打开: 选择Compiler... 将红框里面的勾都点掉即可!

  7. 一步步学习NHibernate(9)——连接查询和子查询(1)

    请注明转载地址:http://www.cnblogs.com/arhat 在前几章中,我们把HQL的基本查询学习了一下,但是只有基本查询很显然不能满足我们的需求,那么就需要一下复杂查询比如" ...

  8. approval workflow in sharepoint designer

    http://office.microsoft.com/en-us/sharepoint-designer-help/video-create-an-approval-workflow-in-shar ...

  9. 第一个js面向对象的小实验

    $.extend({             cal: function (num1,num2,oper,aftercal) {                 this.n1 = num1;     ...

  10. unity手游之聊天SDK集成与使用一

    手游中都有聊天功能,比如公会,私聊,世界聊天,那么找一个好用,功能强大的SDK的可以节省很多精力,帮助我们提高开发速度与游戏质量. 写本篇博文是为了方便使用这个SDK做聊天模块的程序,避免许多坑,我在 ...