POJ 3254 Corn Fields (状压)

POJ 2411 Mondriaan's Dream详细解题报告 里面有非常详细的对于POJ 2411的解题报告,相信对于初学动态规划和深度优先搜索的同学来说有很好的帮助作用。 立即下载

Language:
Corn Fields
Time Limit: 2000MS Memory Limit: 65536K
Total Submissions: 8704 Accepted: 4641

Description

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 planted. Canny FJ knows that the cows dislike eating close to each other, so when choosing which squares to plant, he avoids choosing squares that are adjacent; no two chosen squares share an edge. He has not yet made the final choice as to which squares to plant.

Being a very open-minded man, Farmer John wants to consider all possible options for how to choose the squares for planting. He is so open-minded that he considers choosing no squares as a valid option! Please help Farmer John determine the number of ways he can choose the squares to plant.

Input

Line 1: Two space-separated integers:  M and  N 
Lines 2.. M+1: Line  i+1 describes row  i of the pasture with  N space-separated integers indicating whether a square is fertile (1 for fertile, 0 for infertile)

Output

Line 1: One integer: the number of ways that FJ can choose the squares modulo 100,000,000.

Sample Input

2 3
1 1 1
0 1 0

Sample Output

9

Hint

Number the squares as follows:
1 2 3
  4  

There are four ways to plant only on one squares (1, 2, 3, or 4), three ways to plant on two squares (13, 14, or 34), 1 way to plant on three squares (134), and one way to plant on no squares. 4+3+1+1=9.

Source


下面链接题解很清楚


参考链接 : http://www.cnblogs.com/void/articles/2072601.html




#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<set>
#include<map>


#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define MID(x,y) ((x+y)>>1)

#define eps 1e-8
typedef __int64 ll;

#define fre(i,a,b)  for(i = a; i <b; i++)
#define fro(i,a,b)  fro(i = b; i >=a; i--)
#define mem(t, v)   memset ((t) , v, sizeof(t))

#define sfs(a)      scanf("%s", a);
#define sf(n)       scanf("%d", &n)
#define sff(a,b)    scanf("%d %d", &a, &b)
#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)

#define pf          printf
#define bug         pf("Hi\n")

using namespace std;

#define INF 0x3f3f3f3f
#define N 1<<12

#define mod 100000000

int dp[12][N],h[N],type[N];
int num,n,m;


bool judge(int x)
{
	if(x&(x<<1)) return false;
	return true;
}

void inint()
{

	int len=1<<m,i;

    fre(i,0,len)
       if(judge(i))
		type[num++]=i;

}

int main()
{
	int i,j,t;
	while(~sff(n,m))
	{
		mem(h,0);
		fre(i,0,n)
		  fre(j,0,m)
		  {
		  	int x;
		  	sf(x);
		  	if(x==0) h[i]|=1<<j;
		  }

		num=0;
		inint();

	   mem(dp,0);
       fre(i,0,num)
        if((h[0]&type[i])==0)
		{
			dp[0][i]=1;
		}

	   fre(i,1,n)
	     fre(j,0,num)
	     {
	     	if(h[i]&type[j]) continue;

            fre(t,0,num)
            {
            	if((h[i-1]&type[t])||(type[j]&type[t]))  continue;
            	dp[i][j]=(dp[i][j]+dp[i-1][t])%mod;

            }
	     }

	int ans=0;

	fre(i,0,num)
	  ans=(ans+dp[n-1][i])%mod;
	pf("%d\n",ans);

	}

	return 0;
}




【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复 最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中, 阅读详情

相关推荐

ConvLSTM时空预测实战代码详解

ConvLSTM代码复现

JaysonWong的博客 1万+

POJ-3254(状压dp)

POJ-3254

Terabyte_Dance的博客 314

从HPPC测试到Simulink仿真:锂电池二阶RC模型参数辨识完整流程

本文详细介绍了从HPPC测试到Simulink仿真的锂电池二阶RC模型参数辨识完整流程。通过HPPC测试获取实验数据,利用Simulink的Parameter Estimation工具进行参数辨识和模型验证,为BMS算法开发提供精确的电池模型。文章涵盖测试设计、数据预处理、模型搭建及工程应用等关键步骤,助力新能源电池研发。

whisky的博客 683

POJ - 3254 - Corn Fields ( 状压dp )

题目链接:点击进入 题目 题意 n * m 的土地,告诉你每个位置可以不可以种玉米,摆放奶牛需要放在可以种玉米的地方,同时奶牛不能相邻( 上下左右 ),问共有多少种摆放奶牛的方案 思路 牛与牛之间不能相邻,每只牛能不能放只与上一行和当前这一行有关,所以,我们可以想到一行一行的递推,这是行与行之间,行内部之间也不能相邻,这个,我们可以预处理出一行所有的可行的不相邻的状态( 最多 1<<m 种 ),二维dp,一维表示第几行,一维表示行内部的状态,每行内部的状态可以用二进制来表示( 因为 m 只

Cosmic_Tree的博客 211

Ansys Circuit新手必看:IBIS模型导入时,Pin Import和Buffer Import到底怎么选?

本文详细解析了Ansys Circuit中IBIS模型导入时Pin Import与Buffer Import的选择策略,帮助SI/PI工程师根据仿真需求做出正确决策。通过对比两种方式的特性差异和应用场景,提供实用的选择指南和性能优化建议,提升信号完整性仿真效率。

weixin_26846533的博客 260

硬件开发流程

研发流程在一个有一定规模的企业中起到了非常重要的作用,也是一个产品或者项目成功量产出货依赖的平台体系,作为工程师如果想要走的更远,就必须了解流程体系,了解如何对产品的开发质量进行更好的管控。...

weixin_44126796的博客 8375

poj- 3254(状压dp)

poj-3254 【题目大意】一个矩阵里有很多格子,每个格子有两种状态,可以放牧和不可以放牧,可以放牧用1表示,否则用0表示,在这块牧场放牛,要求两个相邻的方格不能同时放牛,即牛与牛不能相邻。问有多少种放牛方案(一头牛都不放也是一种方案) #include<stdio.h> #include<string.h> using namespace std; cons...

qq_42757965的博客 437

DIY便携式PEMF磁脉冲治疗仪:百元成本自制生物物理疗法设备

脉冲电磁场(PEMF)疗法是一种基于生物物理原理的非侵入性技术,它通过特定频率的电磁脉冲作用于细胞层面,影响细胞膜电位和离子通道活动,从而可能调节细胞代谢与功能。其技术价值在于提供了一种物理干预手段,在健康科技和生物黑客领域被探索用于放松、恢复等场景。实现PEMF的核心是通过信号发生与功率放大驱动电磁线圈产生可控磁场。本文以蓝牙音频模块和智能手机App为切入点,详细解析了如何利用低成本电子元件(如DFRobot XY-WRBT模块和漆包线线圈)构建一个可自定义频率的便携式PEMF设备,涵盖了从电路设计、线圈

weixin_31476015的博客 346

poj3254(状态压缩DP)

解题思路:考虑到m比较小并且每块地有两种状态,故可以将状态压缩,用一个数表示一行的状态。从上一行到下一行转移时有两个限制,第一,同一行相邻的地不能同时种,上下两行相邻的地不能同时种。 例如样例,第一行有5中状态,000,001,010,100,101.第二行有两种状态000,010. 那么第二行中000可以由第一行的5中转移有5中,010不能有第一行的010转移故有4种,共九种。 #incl

fly_tzf的博客 468

YOLOv8改进策略【卷积层】| GnConv:一种通过门控卷积和递归设计来实现高效、可扩展、平移等变的高阶空间交互操作

HorNet: 利用递归门控卷积实现高效高阶空间交互GnConv(Recursive Gated Convolution,递归门控卷积)

Limiiiing的博客 323

Android16 RK3576修改亮度调节为线性调节

文章摘要: 本文分析了Android系统中亮度调节的非线性问题,并提供了线性化改造方案。首先通过追踪Settings和SystemUI代码,发现亮度调节使用了BrightnessUtils类中的非线性Gamma空间转换算法。然后重点修改了BrightnessUtils类,将原有的Hybrid Log Gamma(HLG)算法替换为简单的线性映射公式。最后在自定义工具窗口中实现了基于系统标准接口的亮度调节功能,通过SeekBar的0-100%百分比值线性映射到1-255的系统亮度值。改造后的亮度调节更加直观,

tzj1058756809的博客 75

POJ - 3254 Corn Fields (状压DP)

题意:个格子,有些可以放牛,有些不可以放牛,放的牛不能相邻,问共有多少种放牛的方案? 思路:状压,表示第行状态为前行的方案数目,外层循环一行一行的枚举,内层嵌套枚举第行的状态和第行的状态,最后答案为 #include <stdio.h> #include <string.h> const int mod = 100000000; int dp[15][1 <&l...

GYH0730的博客 351

【实战教程】OpenClaw接入MySQL数据库实战指南

本文介绍了在虚拟机Ubuntu中访问宿主机Win11中MySQL数据库的配置方法,重点包括创建远程用户、权限配置和安全设置。首先在MySQL中创建具有只读权限的用户并刷新权限,然后调整服务器设置允许远程连接。文章还提供了某金融机构财富管理系统的数据库设计方案,包含理财产品表、客户表和份额表的核心结构,其中金额字段使用DECIMAL类型确保精度,并设置唯一键约束。文末强调测试环境配置完成后应恢复安全更新模式以保障生产环境安全。

海兰 8696

poj 3254 Corn Fields 状压dp

Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19399   Accepted: 10189 Description Farmer John has purchased a lush new rectangular pasture composed of M by...

liluoyu_1016的博客 226

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【POJ 3254】 Corn Fields(状压DP)

【POJ 3254】 Corn Fields(状压DP) Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10891   Accepted: 5705 Description Farmer John has purchase

ACMer' 1557

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[poj 3254]Corn Fields[状压DP]

题意: 一块玉米地,有的位置不能种草,种草的小方格不能有临边. 问有多少种方案. 思路: 状压DP. dp[ i ][ j ] 表示从上到下处理到第 i 行时, 该行状态为 j 的方案数. 下一行某状态的方案数就是上一行所有合理状态的方案数之和. 注意初始化和最后一行的处理. #include #include using namespace std; const int MAX

以中有足乐者... 993

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

poj 3254 Corn Fields 状压DP

传送门:poj 3254 Corn Fields题目大意给出一个M*N的矩阵,元素为0表示这个地方不能种玉米,为1表示这个地方能种玉米,现在规定所种的玉米不能相邻,即每行或者没列不能有相邻的玉米,问一共有多少种种植方法。举个例子:2 3 1 1 1 0 1 0 表示2*3的玉米地,现在一共有多少种种植方法呢? 答案:种0个玉米(算一个合法方案)+种1个玉米(4)+种2个玉米(3)+种3个玉米(

woshinannan的专栏 494

[poj3254]Corn Fields_状压dp

Corn Fields poj3254     题目大意:给你一个n*m的地,每一块地可以种或不种,两块种过的地不能挨着,可以一块都不种,问所有的种地方案数。     注释:读入用0和1,1<=n,m<=12.       想法:这题和炮兵阵地特别像,比炮兵更简单。我们再度入的时候直接处理出当前行的地的不可种的情况。预处理出一行如果都能种的话所可能的方案数。此处需要满足...

dianan0938的博客 139

状压dp Poj - 3254 Corn Fields

状压dp 题意 有一块 m 行 n 列的农场地形,要在 ‘1’ 上养牛,并且相邻上下左右不能同时养牛。 问:有多少种方案来养牛? 思路 先看第一行样例 1 1 1,肯定不能相邻养牛,所以有以下几种情况 0 0 0 0 0 0 1 1 0 1 0 2 1 0 0 4 1 0 1 5 当加上第二行的时候,又分为两种情况,每种情况与上一行结合判断是否可行 得出状态转移方程:dp [ i ] [ state[ j ] ] = dp [ i - 1 ] [ state [ k1 ] ]

HappyCode 331

POJ 3254 Corn Fields [状压DP]

Description给你一个地图,叫你放东西。 0表示不能放,1表示可以放。 东西不能相邻放,问有多少种放法?= =一开始黄队长和我说是状压DP。受前几天最优配对问题的影响,以为把所有情况状态压缩。一看数据2^(12*12)肯定是伤不起的。然后就GG。不知道怎么做于是请教黄队长。 原来是每一行压缩。Algorithm于是得到状态 dp[i][j] 表示第i行排列成j的总方案数 状态转移

more time 163

POJ 3254 - Corn Fields [状压DP]

这是一个比较简单的状压DP问题。 状压DP即是利用位运算来进行状态压缩的动态规划。 一些动态规划的状态信息过多,需要高维的数组进行存贮和转移。这个时候,一些满足可以用低进制来存贮(主要为2进制,但不限定于),再通过位运算的帮助进行状态转移,这就是状态压缩动态规划。 这题的基本题意是,有一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以放牛,0则不可以,并且相邻的土地不

JeffCsoul 492

POJ - 3254 Corn Fields(状压dp)

题目链接:点击查看 题目大意:给出一个n*m的地图,有些位置不能放牧,然后放牧的条件是相邻两个格子不允许同时使用,问可行方案有几种 题目分析:因为给出的数据范围很小,并且放牧的状态是放或者不放,很容易用状态0或1来表示,由此会往状态压缩方面去思考,这是一个很中规中矩的状压dp,给出一个矩形然后从第一行开始向下转移状态,和铺瓷砖那个题目的大体思路是一致的,都是先对第一行进行特判,然后枚举第一行,...

Falcon的博客 484

Poj3254 Corn Fields (状压Dp)

poj一道状压Dp的例题

Build 324

POJ 3254 Corn Fields 状压dp

题目:http://poj.org/problem?id=3254题意:有一块n*m的田,其中为1的代表可以在这里放一只牛,对于给定的田,有多少种不同的放法,使任意两只牛不相邻思路:定义dp[i][j]dp[i][j]为第ii行放法为stu[j]stu[j]时,满足条件的总放法有多少种。首先算出第一行的所有满足条件的方法,然后往下依次递推,详见注释#include <iostream> #inclu

弱智就要多努力 515

POJ3254 Corn Fields 【状压DP入门】

【题目大意】 读入两个数m,n;然后下面一个m*n的矩形,由0或1组成。 如果该格为0,则表示该处的土地不肥沃,不能放牛。 如果该格为1,则表示该处的土地肥沃,可以放牛。 求出最后Farmer John放牛的方案数。 【解题思路】 观察到数据规模只有12,但是要求取模1e8,所以优先考虑状态压缩DP 由于m,n都是随读入变化,全部考虑很麻烦,所以我们固定列,只考虑行。 设dp[i]

Lannister_Stark的博客 383

poj3254 Corn Fields(状压dp)

题目链接: http://poj.org/problem?id=3254 题目大意: 给m*n的玉米地,里面可以放牧,1的位置可以放牧,0的位置不行。相邻的位置不能放牧。问一共有多少种放牧的方法。 范围: n,m 思路: 状压dp。 可以为每一个行记录一个状态dp[i][state],表示在第i行的状态state是否满足。 所以在当前的第i行,我们可以通过判断各个状态是否与前

hahahaha 579
上一篇: POJ 2411 Mondriaan's Dream (状压+dfs)
下一篇: POJ 1185 炮兵阵地(状压dp)
左眼皮跳跳~
博客等级 码龄13年 17粉丝 400原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值