牧场的安排

题目描述

Farmer John 新买了一块长方形的牧场,这块牧场被划分成 MN 列 (1≤M≤12;1≤N≤12),每一格都是一块正方形的土地。FJ 打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当的贫瘠,不能用来放牧。并且,奶牛们喜欢独占一块草地,于是 FJ 不会选择两块相邻的土地,即:没有哪两块草地有公共边。当然,FJ 还没有决定在哪些土地上种草。

作为一个好奇的农场主,FJ 想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择。当然,把新的牧场荒废,不在任何土地上种草,也算一种方案。请你帮 FJ 算一下这个总方案数。

输入

第 1行:两个正整数 MN,用空格隔开;第 2到 M+1 行:每行包含 N 个用空格隔开的整数,描述了每块土地的状态。输入的第 i+1 行描述了第 i 行的土地。所有整数均为 0 或 1,1 表示这块土地足够肥沃,0则表示这块地上不适合种草。

输出

第 1行:输出一个整数,即牧场分配总方案数除以 10^8 的余数。

样例输入
2 3  
1 1 1  
0 1 0
样例输出
9
提示

样例说明

按下图把各块土地编号:

1 2 3  

0 4 0

只开辟一块草地有 4种方案:选 1,2,3,4 中的任一块。开辟两块草地的话,有 3 种方案:13,14 以及 34。选三块草地只有一种方案:134。再加把牧场荒废的那一种,总方案数为 4+3+1+1=9种。

数据范围与提示:

1≤N,M≤12

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
int i,j,k,x,n,m,ans,f[1001],dp[30][70000],T,mod=100000000;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin>>n>>m;
	T=(1<<m);
	dp[0][0]=1;
	for(i=1; i<=n; i++)
		for(j=1; j<=m; j++) {
			cin>>x;
			if(!x)f[i]+=(1<<(m-j));
		}
	for(i=1; i<=n; i++)
		for(j=0; j<T; j++)
			for(k=0; k<T; k++)
				if(!(j&f[i])&&!(j&(j<<1))&&!(j&k))
					dp[i][j]+=dp[i-1][k],dp[i][j]%=mod;
	for(i=0; i<T; i++)
		ans+=dp[n][i];
	cout<<ans%mod;
}

### 使用Arduino实现智能牧场项目的方案 #### 项目概述 智能牧场旨在提高畜牧业管理效率,减少人工干预。通过部署传感器网络监测环境参数(温度、湿度)、牲畜健康状况以及自动控制系统(喂食器、饮水设备),可以显著提升养殖效果。 #### 系统架构设计 整个系统由多个部分组成:前端感知层负责收集各类信息;中间传输层用于传递这些数据到云端平台;后台应用则提供数据分析处理能力,并支持远程监控操作界面[^1]。 #### 关键组件介绍 - **Arduino控制器**:作为核心处理器单元,承担着协调各个模块工作的重任。 - **温湿度传感器DHT11/DHT22**:实时获取空气中的温湿变化情况。 - **光照强度检测光敏电阻**:判断当前光线条件是否适合动物活动。 - **土壤水分探测探针**:确保草地生长所需的适宜湿润度。 - **继电器模块**:用来驱动外部负载如电动阀门或风扇电机等执行机构动作。 #### 软件编程指南 采用C/C++语言编写固件代码,在Keil uVision环境下编译链接后下载至目标板卡运行。下面给出一段简单的示例程序片段展示如何读取DHT系列元件返回的数据: ```cpp #include "DHT.h" #define DHTPIN 2 // 定义信号线连接引脚编号 #define DHTTYPE DHT11 // 设置具体型号为DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { float h = dht.readHumidity(); // 获取相对湿度百分比值 float t = dht.readTemperature();// 得到摄氏温度数值 if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print("% Temperature: "); Serial.print(t); Serial.println("°C"); delay(2000); // 每隔两秒刷新一次测量结果 } ``` 为了使上述采集来的原始资料能够被更广泛的应用于后续分析决策过程之中,还需要借助第三方服务平台来进行二次加工整理工作。比如上传至阿里云物联网套件内做进一步挖掘计算,或是对接其他自定义业务逻辑接口完成特定任务调度安排[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值