【POJ3254】coinfield
2024-08-29 22:17:10
状压dp初步。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 600
#define yql 1000000000
int n,m,top,a[N],v[N],dp[][N],now[N];
inline bool lineck(int x){return (x&(x<<))?:;}
inline void init(){
top=;int sum=<<n;
for(int i=;i<sum;i++)if(lineck(i))v[++top]=i;
}
inline bool fit(int x,int k){return (x&now[k])?:;}
inline int jcnt(int x){
int cnt=;
while(x){++cnt;x&=(x-);}
return cnt;
}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
while(scanf("%d%d",&m,&n)!=EOF){
init();memset(dp,,sizeof(dp));
for(int i=;i<=m;i++){
now[i]=;int x;
for(int j=;j<=n;j++){x=read();if(!x)now[i]+=(<<(n-j));}
}
for(int i=;i<=top;i++)if(fit(v[i],))dp[][i]=;
for(int i=;i<=m;i++)for(int k=;k<=top;k++){
if(!fit(v[k],i))continue;
for(int j=;j<=top;j++){
if(!fit(v[j],i-))continue;
if(v[j]&v[k])continue;
dp[i][k]=(dp[i][k]+dp[i-][j])%yql;
}
}
int ans=;
for(int i=;i<=top;i++)ans=(ans+dp[m][i])%yql;
printf("%d\n",ans);
}
}
最新文章
- Android studio安装
- removeClass 按钮点击添加class效果
- Android Fragment 真正的完全解析(下)
- 使用 Ant 自动生成项目构建版本
- linux修改mac地址
- FireFox 一键清理缓存
- python 可变参数
- MYSQL用SOURCE命令时导入乱码的问题解决
- AJAX 控件集之TextBoxWatermark(水印文本框)控件
- SQL Server 数据库定时自动备份【转】
- android 5.0 -- Ripple 效果
- Linux ext2文件系统之初步思考
- Chrome 里的请求报错 ";CAUTION: Provisional headers are shown"; 是什么意思?
- CentOS6.5 [ERROR] /usr/libexec/mysqld: Can&#39;t create/write to file &#39;/var/lib/mysqld/mysqld.pid&#39; (Errcode: 2)
- PDOMySQL实现类, 自动重置无效连接
- Flume 拦截器(interceptor)详解
- NOIP2016-D2-T2 蚯蚓(单调队列)
- Xml 序列化和反序列化
- 进程分析之CPU
- Linux命令之乐--seq
热门文章
- 【bzoj3529】[Sdoi2014]数表 莫比乌斯反演+离线+树状数组
- XML-RPC协议学习
- Android Bitmap和Drawable互转及使用BitmapFactory解析图片流
- BZOJ1149:[CTSC/APIO2007]风铃——题解
- CF1073E Segment Sum 自闭了
- sass的mixin,extend,placeholder,function
- bzoj1656: [Usaco2006 Jan] The Grove 树木 (bfs+新姿势)
- 使用 Intel HAXM 为eclipse安卓模拟器加速
- 将微服务注册到Eureka Server
- Spring源码解析-JdbcTemplate