SPOJ AEROLITE
题目链接: 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的更多相关文章
- 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 ...
- SPOJ DQUERY D-query(主席树)
题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...
- 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 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- 【SPOJ 7258】Lexicographical Substring Search
http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...
- 【SPOJ 1812】Longest Common Substring II
http://www.spoj.com/problems/LCS2/ 这道题想了好久. 做法是对第一个串建后缀自动机,然后用后面的串去匹配它,并在走过的状态上记录走到这个状态时的最长距离.每匹配完一个 ...
- 【SPOJ 8222】Substrings
http://www.spoj.com/problems/NSUBSTR/ clj课件里的例题 用结构体+指针写完模板后发现要访问所有的节点,改成数组会更方便些..于是改成了数组... 这道题重点是求 ...
- SPOJ GSS2 Can you answer these queries II
Time Limit: 1000MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Description Being a ...
随机推荐
- type动态创建类
在一些特定场合,需要动态创建类,比如创建表单,就会用到type动态创建类,举个例子: class Person(object): def __init__(self,name,age): self.n ...
- XMind8激活为Pro教程 - Windows&Mac
本教程用于激活XMind(思维导图制作软件),仅限于个人学习使用. 目前本人激活的版本是xmind8-up6版本,其他更高版本不保证能适用. Windows步骤: 1.英文官网下载客户端并安装(不能用 ...
- Pycharm 修改项目名称后 中括号中出现先前名称怎么解决?
这时候,你打开工程的路径,会找到一个隐藏文件, .idea 目录删掉他,重新导入Pycharm 就行了. idea记录了一些工程项目信息. 步骤: 1.退出当前工程 2.打开工程路径删除.ideal ...
- H-Updating a Dictionary (模拟)
In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...
- Rabbitmq 运维
Rabbitmq 运维 一.安装: 安装ncurses wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz tar zxf ncurses-6 ...
- Ubuntu 安装 ansible
sudo apt update sudo apt-get install software-properties-common sudo apt-add-repository --yes ppa:an ...
- http的Content-Encoding和Content-Type及服务器和客户端处理流程
比如,A 给 B发送了一条信息:hello,首先,A要告诉B,我给你发的这条数据的类型,不同类型的数据,接收方的处理方式不一样,hello属于文本类型,所以Content-Type就要设置成 text ...
- 第一个chrome extension
如今,chrome浏览器的使用如越来越流行,chrome extension往往能提供更多很丰富的功能.以前一直想了解这方面的东西,可是又担心很复杂.前段时间,在斗鱼看一个直播,想刷弹幕,但是每次自己 ...
- APP性能
一.APP性能维度分析 APP类型众多,根据具体类型划分,性能指标的维度和优先级各不相同.视频类APP归属于娱乐游戏型的APP,因此性能测试维度优先级排序为:流畅度.crash.内存.流量.响应时长 ...
- Taro -- 使用 Redux 来进行全局变量的管理
前言 Redux是JavaScript 状态容器,提供可预测化的状态管理.一般来说,规模比较大的小程序,页面状态,数据缓存,需要管理的东西太多,这时候引入Redux可以方便的管理这些状态,同一数据,一 ...