P1879 [USACO06NOV]玉米田Corn Fields(状压dp)
2024-08-29 12:44:29
P1879 [USACO06NOV]玉米田Corn Fields
状压dp水题
看到$n,m<=12$,肯定是状压鸭
先筛去所有不合法状态,蓝后用可行的状态跑一次dp就ok了
#include<iostream>
#include<cstdio>
#include<cstring>
#define re register
using namespace std;
const int p=1e9;
int n,m,a[],f[][];
int t[][],len[];
int mod(int a){return a<p?a:a-p;}
void prepare(){
for(re int i=;i<=n;++i)
for(re int j=;j<(<<m);++j){
if((j&(j<<))||(j&(j>>))||(j&a[i])) continue;
t[i][++len[i]]=j;//合法的存起来
}
}
int main(){
scanf("%d%d",&n,&m); int q;
for(re int i=;i<=n;++i)
for(re int j=;j<m;++j)
scanf("%d",&q),a[i]=(a[i]<<)+(q^);//转存二进制并取反(有利于后面的筛)
prepare();
for(re int i=;i<=len[];++i) f[][t[][i]]=;
for(re int i=;i<=n;++i)
for(re int j=;j<=len[i-];++j)
for(re int k=;k<=len[i];++k){
if(t[i-][j]&t[i][k]) continue;//不合法
f[i][t[i][k]]=mod(f[i][t[i][k]]+f[i-][t[i-][j]]);
}
int ans=;
for(re int i=;i<=len[n];++i) ans=mod(ans+f[n][t[n][i]]);
printf("%d",ans);
return ;
}
最新文章
- 游标的使用——mysql
- 零基础如何系统学习Java Web
- 多MAVEN项目部署到tomcat中_之使用DBUG进行单步调试
- PHP下使用强大的imagick轻松生成组合缩略图
- Elasticsearch 安装与启动
- c++基础 使用智能指针
- Bootstrap页面布局19 - BS提示信息
- Cannot retrieve definition for form bean null on action错误
- Ajax大文件切割传输
- [Hive - LanguageManual] Select base use
- 使用Angularjs和Vue.js对比
- Retinex图像增强算法代码
- AI应用开发实战
- MYSQL 比较集
- DetNet: A Backbone network for Object Detection 笔记
- shopex-百度爬虫抓取过于频繁导致php-cgi占用CPU过高的解决办法
- 老王带你走过 Kafka 入门教程
- Docker系列之Docker容器(读书笔记)
- java常量类编译问题
- 1、ECMAScript 6 简介
热门文章
- 如何提高AJAX客户端响应速度
- 【Thinkphp5 】部署nginx时nginx.conf配置文件修改
- LNMP一键安装包phpMyAdmin无法正常登录,提示:您的Session已过期,请再次登录。
- LeetCode——Pascal&#39;s Triangle II
- BluePrint和ORM
- R中的各种概率统计分布
- POI各Jar包的作用(转)
- wampserver3 集成环境 启动Apache失败
- Linux创建Python虚拟环境
- 170524、java.lang.IllegalArgumentException: No converter found for return value of type异常解决