SPOJ AEROLITE
2024-09-06 00:16:45
题目链接: 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 ;
}
最新文章
- Android—IMEI
- C# 代码笔记
- ACdream 1157 Segments(CDQ分治)
- jackson 注解的使用
- LoadRunner安装包(性能测试工具分享)
- eclips常用快捷键
- 走进C的世界-那些年我们常犯的错---keyword相关
- openstack私有云布署实践【19 通过python客户端 创建实例VM指定IP地址】
- js禁止选中(网页复制)
- Cannot run CentOS 7 or RHEL 7 installer: “Failed to start Switch Root”
- CloudFoundry 之 IBMCloud 项目部署java例子
- Python数据类型的显式转换
- Android.bp 添加宏开关【转】
- Benchmarking Zeebe: An Intro to How Zeebe Scales Horizontally and How We Measure It
- javascript的事件机制(百度文库)
- HTML的实际演练1
- Mac 开发者设置强迫症
- ssh登录时较慢的解决方法
- mysql-day01
- selenium鼠标拖动
热门文章
- js 正则整理
- ElasticSearch 基础 1
- ntp局域网时间同步操作
- [19/05/18-星期六] HTML_form标签
- python爬虫相关安装与应用
- [Vue warn]: You may have an infinite update loop in a component render function
- JavaScript数组为什么是对象
- pg_config - 检索已安装版本的 PostgreSQL 的信息
- BZOJ1135 LYZ(POI2009) Hall定理+线段树
- Sumdiv(约数和问题)