P1879 [USACO06NOV]玉米田Corn Fields 状压dp

链接在此!

正解:状压dp(emm……据说插头dp也可以趴但我不管!!!不会!!!

解题报告:

……我真的太菜了……我以为一个小时前要搞完的题目调错误调了一个小时……90分到100我差不多搞了一个小时……

然后这题还是做过的……就很气,觉得确实是要搞下博客没事儿复习下不然做过的题目还花俩小时我真的哭死……

先放上错误的90分代码讲一下错哪儿了(因为……其实100并不难是可以想到的……没有太大讲的意义,主要我太菜了所以才会搞这么久TT

点我♂看♂沙雕灵巧在线WA题

然后错误的点是最后一个点RE,开大点儿就MLE。

来考你一下,这个程序错哪儿了?

不知道你发现了没有
就是当j和k可以满足我那个判断的时候,我的同一个ztk会被加进去很多次!然后[0]那个计数菌就会变得很大很大!然后它就死了!!!明白了嘛!!!

其实并不是代码只是想折叠下quq

于是我修改了一下,判了下重,就光荣地WA了,还从90降到了30QAQ爆哭QAQ

哭到一半!我突然就!灵光一现!!!就想出来正解!!!就是其实f那个数组是不要开的……你484有点傻……

好然后就放代码趴其实没有改太多并不是很难嘛(……对着你做了两小时的程序你再说一遍这句话???

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(ll i=x;i<=y;i++)
#define rl register ll
ll zt[(1<<15)+50]={},ok[15]={},cnt,dp[15][(1<<15)+50],ans;
ll read()
{
    char ch=getchar();ll x=0;bool y=1;
    while(ch!=‘-‘ && (ch>‘9‘ || ch<‘0‘))ch=getchar();
    if(ch==‘-‘)y=0,ch=getchar();
    while(ch>=‘0‘ && ch<=‘9‘)x=(x<<1)+(x<<3)+(ch^‘0‘),ch=getchar();
    return y?x:-x;
}
int main()
{
    ll m=read(),n=read();
    rp(i,0,(1<<n)-1)
        if((i&(i<<1))==0 && (i&(i>>1))==0)
            zt[++cnt]=i;
    rp(i,1,m)
        rp(j,1,n)
        {
            char ch=getchar();
            while(ch!=‘1‘ && ch!=‘0‘)ch=getchar();
            if(ch==‘1‘)ok[i]=ok[i]|(1<<(n-j));
        }
    rp(i,1,cnt)if((ok[1]&zt[i])==zt[i])dp[1][zt[i]]=1;
    rp(i,2,m)
        rp(k,1,cnt)
            rp(j,1,cnt)
                if(((ok[i]&zt[k])==zt[k]) && ((zt[k] & zt[j])==0))
                    dp[i][zt[k]]=(dp[i][zt[k]]+dp[i-1][zt[j]])%100000000;
    rp(i,1,cnt)ans=(ans+dp[m][zt[i]])%100000000;
    printf("%lld",ans);
    return 0;
}

点♂我♂在线膜拜hl大佬

好的那么这次题解只写了十分钟! 我hin满意!以后写题解也不要扯废话浪费时间!over!

原文地址:https://www.cnblogs.com/lqsukida/p/9768717.html

时间: 2024-10-13 12:15:06

P1879 [USACO06NOV]玉米田Corn Fields 状压dp的相关文章

题解——[USACO06NOV]玉米田Corn Fields 状压DP

题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用. 遗憾的是,有些土地相当贫瘠,不能用来种草.并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边. John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案) 输出一个整数,即牧

[USACO06NOV]玉米田Corn Fields (状压$dp$)

题目链接 Solution 状压 \(dp\) . \(f[i][j][k]\) 代表前 \(i\) 列中 , 已经安置 \(j\) 块草皮,且最后一位状态为 \(k\) . 同时多记录一个每一列中的不能放的位置 \(w[i]\). 然后就可以很轻松的转移了... 转移方程看代码. Code #include<bits/stdc++.h> #define ll long long using namespace std; ll f[13][145][10000],n,K; ll js[1000

洛谷 P1879 [USACO06NOV]玉米田Corn Fields

P1879 [USACO06NOV]玉米田Corn Fields 题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the

P1879 [USACO06NOV]玉米田Corn Fields

P1879 [USACO06NOV]玉米田Corn Fields 这道题跟互不侵犯差不多,但是数据范围更大了 对于状态压缩dp,提前枚举出转移是一种很好的优化 然后对于转移也需要仔仔细细的分析,如同期望dp #include<cstdio> #include<algorithm> #include<iostream> const int mod=1e8; int map[20]; long long f[2][1<<12]; int b[400],tot;

【luogu P1879 [USACO06NOV]玉米田Corn Fields】 题解

题目链接:https://www.luogu.org/problemnew/show/P1879 状压DP. 设dp[i][j]表示第i行,状态为j的方案数 初始dp[0][0] = 1 这样一共12行12列,最多1<<12. 这样转移时,只要满足上下没有两个1,这两行分别满足没有相邻1. 加法原理转移. $ j&k==0 $ $ dp[i][j] += dp[i-1][k] $ #include <cstdio> #include <cstring> #inc

洛谷P1879 [USACO06NOV]玉米田Corn Fields【状压DP】题解+AC代码

题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) 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 b

P1879 [USACO06NOV]玉米田Corn Fields题解(注释版)

题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) 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 b

【p1879】[USACO06NOV]玉米田Corn Fields

Description 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用. 遗憾的是,有些土地相当贫瘠,不能用来种草.并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边. John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案) I

POJ 1684 Corn Fields(状压dp)

描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) 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