hdu 4804 插头DP
来源:互联网 发布:c语言入门什么书好 编辑:程序博客网 时间:2024/04/28 23:39
和上一篇很像
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const long long MOD = 1e9 + 7;int N, M, C, D;long long dp[2][21][1<<11];char str[110][15];int main(){ while( scanf( "%d%d%d%d", &N, &M, &C, &D ) != EOF ){ for( int i = 0; i < N; i++ ){ scanf( "%s", str[i] ); } int now, pre; now = 0; pre = 1; memset( dp, 0, sizeof( dp ) ); dp[now][0][(1<<M)-1] = 1; for( int i = 0; i < N; i++ ){ for( int j = 0; j < M; j++ ){ swap( now, pre ); memset( dp[now], 0, sizeof( dp[now] ) ); for( int k = 0; k <= D; k++ ){ for( int s = 0; s < ( 1 << M ); s++ ){ if( str[i][j] == '0' ){ if( s & ( 1 << j ) ){ dp[now][k][s] = ( dp[pre][k][s] + dp[now][k][s] ) % MOD; } }else{ if( j && !( s & ( 1 << ( j - 1 ) ) ) && ( s & ( 1 << j ) ) ){ dp[now][k][s|(1<<(j-1))] = ( dp[now][k][s|(1<<(j-1))] + dp[pre][k][s] ) % MOD; } dp[now][k][s^(1<<j)] = ( dp[now][k][s^(1<<j)] + dp[pre][k][s] ) % MOD; if( k > 0 && ( s & ( 1 << j ) ) ){ dp[now][k][s|(1<<j)] = ( dp[now][k][s|(1<<j)] + dp[pre][k-1][s] ) % MOD; } } } } } } long long ans = 0; for( int i = C; i <= D; i++ ){ ans = ( ans + dp[now][i][(1<<M)-1] ) % MOD; } cout << ans << endl; } return 0;}
0 0
- hdu 4804 插头DP
- HDU 4804 Campus Design(插头DP)
- hdu 4804 Campus Design(插头dp)
- hdu 4804 Campus Design 插头dp
- 插头dp入门 hdu 4804 + 5286
- hdu 1693 插头dp
- hdu 4064 (插头DP)
- HDU-1693-插头dp
- Hdu 1693 插头dp
- hdu 1693 插头DP
- hdu 1693 插头dp
- hdu 1964 插头dp
- hdu 1964 Pipes 插头DP
- HDU 4285 circuits[插头DP]
- hdu 4949 Light 插头dp
- hdu 1964 Plan (插头dp)
- hdu 3377 Plan(插头dp)
- hdu 3377 Plan 插头dp
- log4j模板及注释
- Java方法参数传递
- JSP Cookie 使用完全详解
- Linux网络编程必看书籍推荐
- 玩转Web值jquery(一)---对表单中的某一标签批量处理(以input为例)
- hdu 4804 插头DP
- 01_ linq
- Java面试的几个问题
- JDK1.7新特性
- 【线性表】顺序表和链表的比较
- spring 3 企业开发 5
- pig--- Use the Parallel Features
- 南阳 891 找点
- 我使用过的Linux命令之type - 显示命令的类型