题目链接: 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 ;
}

最新文章

  1. Android—IMEI
  2. C# 代码笔记
  3. ACdream 1157 Segments(CDQ分治)
  4. jackson 注解的使用
  5. LoadRunner安装包(性能测试工具分享)
  6. eclips常用快捷键
  7. 走进C的世界-那些年我们常犯的错---keyword相关
  8. openstack私有云布署实践【19 通过python客户端 创建实例VM指定IP地址】
  9. js禁止选中(网页复制)
  10. Cannot run CentOS 7 or RHEL 7 installer: “Failed to start Switch Root”
  11. CloudFoundry 之 IBMCloud 项目部署java例子
  12. Python数据类型的显式转换
  13. Android.bp 添加宏开关【转】
  14. Benchmarking Zeebe: An Intro to How Zeebe Scales Horizontally and How We Measure It
  15. javascript的事件机制(百度文库)
  16. HTML的实际演练1
  17. Mac 开发者设置强迫症
  18. ssh登录时较慢的解决方法
  19. mysql-day01
  20. selenium鼠标拖动

热门文章

  1. js 正则整理
  2. ElasticSearch 基础 1
  3. ntp局域网时间同步操作
  4. [19/05/18-星期六] HTML_form标签
  5. python爬虫相关安装与应用
  6. [Vue warn]: You may have an infinite update loop in a component render function
  7. JavaScript数组为什么是对象
  8. pg_config - 检索已安装版本的 PostgreSQL 的信息
  9. BZOJ1135 LYZ(POI2009) Hall定理+线段树
  10. Sumdiv(约数和问题)