栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3363 Another Brick in the...

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3363 Another Brick in the...

#include <cstdio>#include <algorithm>#include <cstring>unsigned dp[9][1 << 18];unsigned ans[9][9];void init(const int n) {    const int m = n + 1, mm = (1 << m) - 1;    int a, b, s;    memset(dp, 0, sizeof(dp));    dp[1][(1 << (m + m)) - 2] = 1;    for (int i = 1; i <= 8; ++i) {        for (int j = 0; j < (1 << (m + m)); ++j) { if (dp[i][j] == 0) {     continue; } a = j >> m; b = j & mm; if (b != 0 && b == (b & (         (a & (a << 1)) |         (a & (b << 1)) |          ((a << 1) & (b >> 1))     ))) {     ans[n][i] += dp[i][j]; } if (i == 8) {     continue; } s = (i & 1) ? (1 << m) : (1 << n); for (int c = 1; c < s; ++c) {     if (b == (b & (  (a & (a << 1)) |      (a & c & ~(c << 1)) |  ((a << 1) & (c << 1) & ~c) |      (a & (b << 1)) |       ((a << 1) & (b >> 1))  ))) {         if (i & 1) {  dp[i + 1][(b << n) ^ c] += dp[i][j];         } else {  dp[i + 1][(b << m) ^ (c << 1)] += dp[i][j];         }     } }        }    }}int main() {    int m, n;    for (int i = 1; i <= 8; ++i) {        init(i);    }    while (scanf("%d%d", &m, &n) != EOF) {        printf("%un", ans[m][n]);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379196.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号