HDU 4804

思路:

轮廓线dp

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pi acos(-1.0)
#define LL long long
//#define mp make_pair
#define pb push_back
#define ls rt<<1, l, m
#define rs rt<<1|1, m+1, r
#define ULL unsigned LL
#define pll pair<LL, LL>
#define pii pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);
//head const int N = ;
const int MOD = 1e9 + ;
int dp[][<<N][];
int n, m, cur;
char mp[][N];
void update(int a, int b, int t) {
if(b & (<<m)) dp[cur][b^(<<m)][t] += dp[-cur][a][t-], dp[cur][b^(<<m)][t] %= MOD;
}
void Update(int a, int b, int t) {
if(b & (<<m)) dp[cur][b^(<<m)][t] += dp[-cur][a][t], dp[cur][b^(<<m)][t] %= MOD;
}
int main() {
int c, d;
while(~scanf("%d%d%d%d", &n, &m, &c, &d)) {
for (int i = ; i < n; i++) scanf("%s", mp[i]);
cur = ;
mem(dp, );
dp[cur][(<<m)-][] = ;
for (int i = ; i < n; i++) {
for (int j = ; j < m; j++) {
cur ^= ;
mem(dp[cur], );
if(mp[i][j] == '') {
for(int k = ; k < (<<m); k++) {
for (int l = ; l <= d; l++) {
Update(k, (k<<), l);
if(l)update(k, (k<<)^, l);
if(i && !(k & (<<m-))) Update(k, (k<<)^(<<m)^, l);
if(j && !(k & )) Update(k, (k<<)^, l);
}
}
}
else {
for (int k = ; k < (<<m); k++) {
for (int l = ; l <= d; l++) {
Update(k, (k<<)^, l);
}
}
}
}
}
LL ans = ;
for (int i = c; i <= d; i++) ans += dp[cur][(<<m)-][i], ans %= MOD;
printf("%lld\n", ans);
}
return ;
}

HDU 4804 Campus Design的更多相关文章

  1. HDU - 4804 Campus Design(状压+轮廓线dp)

    Campus Design Nanjing University of Science and Technology is celebrating its 60th anniversary. In o ...

  2. HDU - 4804 Campus Design 轮廓线dp

    题意:一个nm的矩阵被12的骨牌和11的骨牌完全覆盖,11的骨牌只能放c-d次,矩阵中有障碍物 题解:dp[i][j][k]表示到了第i行,第j个状态,放过k个11的骨牌,当前位有障碍物时只有一种转移 ...

  3. HDU 4802 && HDU 4803 贪心,高精 && HDU 4804 轮廓线dp && HDU 4805 计算几何 && HDU 4811 (13南京区域赛现场赛 题目重演A,B,C,D,J)

    A.GPA(HDU4802): 给你一些字符串对应的权重,求加权平均,如果是N,P不计入统计 GPA Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  4. HDU 1007 Quoit Design(二分+浮点数精度控制)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. HDU 1007 Quoit Design(经典最近点对问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Oth ...

  6. hdu 1007 Quoit Design (最近点对问题)

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  7. HDU 1007 Quoit Design【计算几何/分治/最近点对】

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  8. hdu 1007 Quoit Design 分治求最近点对

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  9. HDU 1007 Quoit Design 平面内最近点对

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 上半年在人人上看到过这个题,当时就知道用分治但是没有仔细想... 今年多校又出了这个...于是学习了一下平 ...

随机推荐

  1. js通过DOM改变html和css

    1.改变html输出流,通过document.write() 直接向 HTML 输出流写内容 <body> <p>段落</p> <script> doc ...

  2. python简说(十八)导入模块

    1.import xx import 一个模块的实质就是把这个python文件从头到尾执行一遍 2.import模块的查找模块的顺序 1).从当前目录下找 2).sys.path python的安装目 ...

  3. 【4opencv】识别复杂的答题卡1(主要算法)

    一.问题提出 由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片 下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率. 二. ...

  4. Codeforces 822C Hacker, pack your bags! - 贪心

    It's well known that the best way to distract from something is to do one's favourite thing. Job is ...

  5. 牛客网数据库SQL实战(11-15)

    11.获取所有员工当前的manager,如果当前的manager是自己的话结果不显示,当前表示to_date='9999-01-01'.结果第一列给出当前员工的emp_no,第二列给出其manager ...

  6. 【Python028--引入文件】

    一.打开文件 1.open()函数 打开模式 执行操作 ‘r’ 以只读方式打开文件(默认) ‘w’ 以写入的方式打开文件,会覆盖已存在的文件 ‘x’     如果文件已经存在,使用此模式打开将引发异常 ...

  7. Catogory如何添加属性

    一,Category结构体 typedef struct category_t { const char *name; //类的名字 classref_t cls; //类 struct method ...

  8. Oracle错误——ORA-01940: cannot drop a user that is currently connected

    背景 在oracle删除用户时,有的时候会提示ORA-01940: cannot drop a user that is currently connected,不能够删除用户. 原因 这是因为有其他 ...

  9. 如何合并ts文件?

    答: 使用ffmpeg工具,使用方法如下: ffmpeg -i <m3u8 file name> <output file name> 注意:要先将m3u8文件中描述的ts文件 ...

  10. linux内核中的PTP clock是什么?

    答: Precise Time Protocol(PTP),这是一种高精度时间同步协议,PTP是在硬件级实现的,因此需要硬件支持才能实现高精度时间同步