易知状态不会太多(\(3329\)个),直接搜一下,按照能不能连在后面建边,跑一遍dp即可

#include <bits/stdc++.h>

using namespace std;

struct S {
int cnt;
vector<int> s;
}a[5000]; int n, m = 10, L = 32;
vector<int> G[5000];
long long f[5000][15];
int tmp[100]; void dfs(int len, int cnt) {
if(len >= L) {
if(len > L) return ;
a[++n].cnt = cnt;
a[n].s.resize(cnt);
for(int i = 0; i < cnt; ++i) a[n].s[i] = tmp[i+1];
return ;
}
tmp[cnt+1] = 2;
dfs(len+2, cnt+1);
tmp[cnt+1] = 3;
dfs(len+3, cnt+1);
} bool check(S &x, S &y) {
static int b[50];
memset(b, 0, sizeof b);
int sum = 0;
for(int i = 0; i < x.cnt; ++i) b[sum+x.s[i]]++, sum += x.s[i];
sum = 0;
for(int i = 0; i < y.cnt; ++i) b[sum+y.s[i]]++, sum += y.s[i];
for(int i = 2; i < L; ++i) if(b[i] > 1) return false;
return true;
} int main() {
dfs(0, 0);
for(int i = 1; i <= n; ++i) {
f[i][1] = 1;
for(int j = 1; j < i; ++j) if(check(a[i], a[j])) G[i].push_back(j), G[j].push_back(i);
}
for(int i = 2; i <= m; ++i)
for(int u = 1; u <= n; ++u)
for(int j = 0; j < G[u].size(); ++j)
f[u][i] += f[G[u][j]][i-1];
long long ans = 0;
for(int i = 1; i <= n; ++i) ans += f[i][m];
printf("%lld\n", ans);
return 0;
}

ProjectEuler215 Crack-free Walls的更多相关文章

  1. reversing-Easy Crack

    Easy Crack 程序启动后输入任意字符会显示一个MessageBox的Incorrect Password. 打开OllyDbg,载入程序后查找到目标字符串Incorrect Password, ...

  2. crack.vbs病毒,优盘里所有文件全变成快捷方式

    去了一趟学校打印店,用优盘copy打印了点东西,当时在打印店电脑里打开优盘的时候里面就变成了快捷方式,但没怎么在意.回来之后在自己电脑上居然也这样了.网上一搜是中了crack.vbs病毒了.格式化优盘 ...

  3. MATLAB的crack安装小曲

    MATLAB的crack安装小曲 本学期要学数学模型和数值分析,需要用MATLAB,便琢磨着装MATLAB.我同专业的同学会装MATLAB的crack,他是数学协会的理事长,平时爱吹牛,问他一个简单的 ...

  4. Walls(floyd POJ1161)

    Walls Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7677   Accepted: 3719 Description ...

  5. sdut 2165:Crack Mathmen(第二届山东省省赛原题,数论)

    Crack Mathmen Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  Since mathmen take securit ...

  6. MITM to crack Https connections

    Everybody knows that https is http over SSL, and https is a secure way for protecting confidential d ...

  7. CentOS下modelsim 10.2c install & crack

    install: 1. install is easy to all : run install.linux 2 crack: this section is important: a. instal ...

  8. Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)

    Crack Mathmen TimeLimit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Since mathmen take security ...

  9. 最短路(数据处理):HDU 5817 Ice Walls

    Have you ever played DOTA? If so, you may know the hero, Invoker. As one of the few intelligence car ...

随机推荐

  1. 最新 网龙网络java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.网龙网络等10家互联网公司的校招Offer,因为某些自身原因最终选择了网龙网络公司.6.7月主要是做系统复习.项目复盘.Le ...

  2. 最新 完美世界java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.完美世界等10家互联网公司的校招Offer,因为某些自身原因最终选择了完美世界.6.7月主要是做系统复习.项目复盘.Leet ...

  3. B8 Concurrent JDK中的乐观锁与原子类

    [概述] 乐观锁采用的是一种无锁的思想,总是假设最好的情况,认为一个事务在读取数据的时候,不会有别的事务对数据进行修改,只需要在修改数据的时候判断原数据数据是否已经被修改了.JDK 中 java.ut ...

  4. [转帖]被HTTP/2漏洞拖累,所有Kubernetes版本受影响

    被HTTP/2漏洞拖累,所有Kubernetes版本受影响 https://www.kubernetes.org.cn/5746.html 服务很重要啊... 低版本都不解决安全问题了.. 不过HTT ...

  5. LeetCode 61——旋转链表(JAVA)

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4-& ...

  6. 用shell脚本安装MySQL-5.7.22-Percona版本

    #!/bin/bash MySQL_Package=Percona-Server-5.7.22-22-Linux.x86_64.ssl101.tar.gz Package_Source=Percona ...

  7. poj 1753高斯

    和前面的开关问题差不多,就是要理解一下我们方程等号的右端代表的含义是什么.我们建立的方程是想让对位的位置变或者不变,然后生成增广矩阵的时候要多注意一点. ac代码: #include #include ...

  8. spring-cloud 学习三 服务提供者

    基于spring-boot创建一个module提供服务 使用mysql数据库,dao使用mybatis,数据库连接池使用阿里的druid 添加maven依赖 <parent> <gr ...

  9. Spring mvc 参数半丁

    http://blog.csdn.net/eson_15/article/details/51718633 众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面 ...

  10. Lua虚拟机中的数据结构与栈

    Lua虚拟机中的数据结构与栈 来源 https://blog.csdn.net/zry112233/article/details/80828327 由上一篇文章可知解释器分析Lua文件之后生成Pro ...