题目链接: http://www.spoj.com/problems/AEROLITE/en/

--------------------------------------------------------------------------------------

虽然没有明确的区间,但做法还是和区间$DP$一样, 将左右两个区间合并成一个大区间

为了防止重复统计,每次左区间必须是有一个括号括在最外层的

自己做的方法的复杂度可达 $O((L1L2L3D)^2)$ 加上少量剪枝后仍有$3s$

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int mod = ;
long long f[][][][];
long long dfs(int l1, int l2, int l3, int d)
{
if(f[l1][l2][l3][d] != -)
return f[l1][l2][l3][d];
if(l1 + l2 + l3 == )
return f[l1][l2][l3][d] = (d == );
if(l1 + l2 + l3 < d)
return f[l1][l2][l3][d] = ;
f[l1][l2][l3][d] = ;
for(int b1 = ; b1 <= l1; ++ b1)
for(int b2 = ; b2 <= l2; ++ b2)
for(int b3 = ; b3 <= l3; ++ b3)
{
if(b1 + b2 + b3 == )
continue;
for(int d1 = ; d1 < d ; ++d1)
{
if(b1)
f[l1][l2][l3][d] += dfs(b1 - , b2, b3,
d1 - ) * dfs(l1 - b1, l2 - b2, l3 - b3, d);
else if(b2)
f[l1][l2][l3][d] += dfs(, b2 - , b3, d1 - )
* dfs(l1, l2 - b2, l3 - b3, d);
else
f[l1][l2][l3][d] += dfs(, , b3 - , d1 - )
* dfs(l1, l2, l3 - b3, d);
}
for(int d2 = ; d2 <= d; ++d2)
{
if(b1)
f[l1][l2][l3][d] += dfs(b1 - , b2, b3,
d - ) * dfs(l1 - b1, l2 - b2, l3 - b3, d2);
else if(b2)
f[l1][l2][l3][d] += dfs(, b2 - , b3, d - )
* dfs(l1, l2 - b2, l3 - b3, d2);
else
f[l1][l2][l3][d] += dfs(, , b3 - , d - )
* dfs(l1, l2, l3 - b3, d2);
}
}
return f[l1][l2][l3][d] %= mod;
}
int main()
{
int l1, l2, l3, d;
for(int ca = ; ca <= ; ++ca)
{
memset(f, -, sizeof f);
scanf("%d%d%d%d", &l1, &l2, &l3, &d);
printf("%lld\n", dfs(l1, l2, l3, d));
}
return ;
}

SPOJ AEROLITE的更多相关文章

  1. BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]

    2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 5217  Solved: 1233 ...

  2. SPOJ DQUERY D-query(主席树)

    题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...

  3. SPOJ GSS3 Can you answer these queries III[线段树]

    SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...

  4. 【填坑向】spoj COT/bzoj2588 Count on a tree

    这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...

  5. SPOJ bsubstr

    题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...

  6. 【SPOJ 7258】Lexicographical Substring Search

    http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...

  7. 【SPOJ 1812】Longest Common Substring II

    http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...

  8. 【SPOJ 8222】Substrings

    http://www.spoj.com/problems/NSUBSTR/ clj课件里的例题 用结构体+指针写完模板后发现要访问所有的节点,改成数组会更方便些..于是改成了数组... 这道题重点是求 ...

  9. SPOJ GSS2 Can you answer these queries II

    Time Limit: 1000MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Description Being a ...

随机推荐

  1. SSM003/构建Maven单模块项目(二)

    一.Controller基础代码(mooc) 1.UserController.java /** *springmvc1-2:返回jsp页面 * 请求URL: /user/getUserById?us ...

  2. MethodBase.GetCurrentMethod 方法

    如果当前正在执行的方法定义泛型类型上MethodInfo返回GetCurrentMethod通过泛型类型定义 (即,MethodInfo.ContainsGenericParameters返回true ...

  3. Node.js实战9:用EventEmitter触发和响应事件。

    Nodejs有一个重要的事件模块:EventEmitter. 它在Nodejs的内置及第三方模块中被大量使用,许多Nodejs项目的架构都是用它实现的. 可见,EventEmitter对于学习Node ...

  4. 使用Jest测试JavaScript (入门篇)

    1 什么是 Jest? Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言.JSDom.覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架. ...

  5. 洛谷 - P3391 【模板】文艺平衡树(Splay) - 无旋Treap

    https://www.luogu.org/problem/P3391 使用无旋Treap维护序列,注意的是按顺序插入的序列,所以Insert实际上简化成直接root和Merge合并,但是假如要在序列 ...

  6. javascript基础总汇

    ## javaScript是什么:1.JavaScript 运行在客户端(浏览器)的编程语言2.用来给HTML网页增加动态功能3.用来给HTML网页增加动态功能.4.Netscape在最初将其脚本语言 ...

  7. 加秘钥的SSH

    import paramiko private_key = paramiko.RSAKey.from_private_key_file('id_rsa31.txt') # 创建SSH对象 ssh = ...

  8. JavaScript、ES6中的类的继承

    类的继承 extends  connstructor  super 例1: class Father { constructor(){} money(){ console.log("1000 ...

  9. Python之路-Python常用模块-time模块

    一.time模块 常用的一种获取当前时间以及时间格式化的模块,模块名称:time time模块在Python原生安装中就存在所以不需要进行任何安装操作,直接使用即可. 导入方式: import tim ...

  10. sqoop使用中文手册

    文章转载自:http://www.zihou.me/html/2014/01/28/9114.html 1.     概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera ...