[luoguP1879] [USACO06NOV]玉米田Corn Fields(DP)
2024-09-07 03:49:37
说要统计方案,感觉就是个 Σ
而矩阵中只有 01 ,可以用二进制表示
这样,预处理出每一个每一行所有可能的状态 s
然后初始化第一行所有状态的方案数为 1
f[i][j] = Σf[i - 1][k] (k 和 j 不冲突,j 为第 i 行所有方案,k 为第 i - 1 行所有方案)
——代码
#include <cstdio>
#include <iostream>
#define mod 100000000 int n, m, ans;
int f[][ << ], pos[][ << ], s[][ << ]; inline int read()
{
int x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline void dfs(int k, int i, int num)
{
if(i > pos[k][])
{
s[k][++s[k][]] = num;
return;
}
dfs(k, i + , num);
if((pos[k][i] ^ (pos[k][i - ] + )) || (i == ))
dfs(k, i + , num + ( << pos[k][i] - ));
else if((i ^ ) && (pos[k][i] == pos[k][i - ] + ))
if(((num >> pos[k][i - ] - ) & ) ^ )
dfs(k, i + , num + ( << pos[k][i] - ));
} int main()
{
int i, j, k, x;
n = read();
m = read();
for(i = ; i <= n; i++)
for(j = ; j <= m; j++)
{
x = read();
if(x) pos[i][++pos[i][]] = j;
}
for(i = ; i <= n; i++) dfs(i, , );
for(i = ; i <= s[][]; i++) f[][i] = ;
for(i = ; i <= n; i++)
for(j = ; j <= s[i][]; j++)
for(k = ; k <= s[i - ][]; k++)
if(!(s[i][j] & s[i - ][k]))
{
f[i][j] += f[i - ][k];
if(f[i][j] >= mod) f[i][j] -= mod;
}
for(i = ; i <= s[n][]; i++)
{
ans += f[n][i];
if(ans >= mod) ans -= mod;
}
printf("%d\n", ans);
return ;
}
最新文章
- MPLS与LDP从入门到了解
- bootstrap学习笔记--bootstrap排版类的使用
- sql server 小记——分区表
- 【BZOJ】【2038】小Z的袜子
- PHP抓取豆瓣读书爬虫代码
- 【java开发系列】— JDOM创建、改动、删除、读取XML文件
- noip2006T1 能量项链
- C#关于静态与非静态的区别
- .NET study collection links
- leetcode第22题--Merge k Sorted Lists
- iOS 开发者旅途中的指南针 - LLDB 调试技术
- Uva 548 二叉树的递归遍历lrj 白书p155
- zabbix系列之十——添加短信告警
- python中的unique()
- 背水一战 Windows 10 (108) - 通知(Tile): application tile 基础, secondary tile 基础
- python免费发送短信
- thinkphp的系统变量
- PCIE协议解析 synopsys IP loopback 读书笔记(1)
- Mac OSX 安装qemu
- RESTful Java client with Apache HttpClient / URL /Jersey client
热门文章
- js实现页面的全屏与退出
- JavaScript--DOM方法
- [SDOI2009]学校食堂
- DFS(连通块) HDU 1241 Oil Deposits
- 转 PHP - AJAX 与 PHP
- pyinstaller打包报错:AttributeError: &#39;str&#39; object has no attribute &#39;items&#39;
- C#基础 结构体 枚举类型
- C:\Windows\System32\drivers\etc\hosts文件显示
- Dom编程的入门
- Python批量下载电视剧电影--自己动手丰衣足食