时间限制:5000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi的宿舍楼下有一块用于停自行车的区域。平时自行车都停得非常杂乱,于是楼长打算去买一排自行车架用来停车。自行车架一般有P个槽,每个槽的两侧都可以停入自行车;但是一个槽位同时只能有一侧停入自行车。此外,停入一辆自行车会导致无法在这一侧的附近若干个槽位中停入自行车。

经过调查,这栋宿舍楼的学生共拥有N辆A型自行车、M辆B型自行车和K辆C型自行车。其中A型自行车会导致这一侧的左右各1个槽位不能使用,B型自行车会导致这一侧的左右2个槽位不能使用,C型自行车会导致这一侧的左右3个槽位不能使用。

现给定N、M和K,楼长希望知道P至少要是多少,才能将所有自行车都停入。

如图中所示,P最少为7就可以存放下2辆A型,1辆B型和2辆C型。

输入

每个输入文件包含多组测试数据,在每个输入文件的第一行为一个整数Q,表示测试数据的组数。

每组测试数据为3个整数N、M和K,意义如前文所述。

对于20%的数据,满足0<=N、M、K<=2,Q=100

对于40%的数据,满足0<=N、M、K<=50,Q=100

对于100%的数据,满足0<=N、M、K<=50,1<=Q<=100000

输出

对于每组测试数据,输出一个整数P,表示自行车架至少需要的槽位。

样例输入
4
2 1 2
1 0 0
2 0 2
1 2 2
样例输出
7
1
5
7
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int inf=1e8+;
int dp[][][][][][],ans;
int get_dp()
{
memset(dp,inf,sizeof(dp));
dp[][][][][][]=;
dp[][][][][][]=;
dp[][][][][][]=;
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=;k++)
{
for(int li=;li<;li++)
{
for(int lj=;lj<;lj++)
{
for(int lk=;lk<=;lk++)
{
if(dp[i][j][k][li][lj][lk]!=inf)//i个A,j个B,k个C,li为长的那一列的最上面的类型,lj为短的,lk为长的与短的相距多少,
{
for(int ad=;ad<;ad++)
{
int fi=i,fj=j,fk=k;
if(ad==)fi++;
if(ad==)fj++;
if(ad==)fk++;
int flk=lk+max(li,ad)+;
if(flk>)flk=;
dp[fi][fj][fk][ad][lj][flk]=min(dp[fi][fj][fk][ad][lj][flk],dp[i][j][k][li][lj][lk]+max(li,ad)+);
flk=max(max(lj,ad)+-lk,);
if(flk>)flk=;
dp[fi][fj][fk][ad][li][flk]=min(dp[fi][fj][fk][ad][li][flk],dp[i][j][k][li][lj][lk]+flk);
} }
}
}
}
}
}
}
}
int main()
{
int t,n,m,l;
scanf("%d",&t);
get_dp();
dp[][][][][][]=;
while(t--)
{
scanf("%d%d%d",&n,&m,&l);
ans=inf;
for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
for(int k=;k<=;k++)
{
ans=min(ans,dp[n][m][l][i][j][k]);
}
}
}
printf("%d\n",ans);
}
return ;
}

hihocoder-1274 自行车架(高维dp)的更多相关文章

  1. 【学时总结】◆学时·VII◆ 高维DP

    ◆学时·VII◆ 高维DP 自学之余,偶遇DP…… ◇ 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是……每一维的大小都不算太大(不然用dp数组存储下来内存会炸),而且枚举时容易超时… ...

  2. [hihocoder 1033]交错和 数位dp/记忆化搜索

    #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1 ...

  3. 数数(高维DP)

    T1 数数 [问题描述] fadbec 很善于数数,⽐如他会数将 a 个红球,b 个黄球,c 个蓝球,d 个绿球排成⼀列,任意相邻不同⾊的数⽬. 现在 R 君不知道 fadbec 数的对不对,想让你也 ...

  4. HihoCoder - 1048 状压DP 经典题

    hihocoder题解说的十分清晰了,这份代码就是从讲解里学习的 方案数就是不断枚举合法状态下横放竖放或两者均可 合法判断的依据是记录当前行和下一行的状态 防止重复枚举的方法是先按行后按列 递归基瞎写 ...

  5. hihoCoder 1033 : 交错和 数位dp

    思路:数位dp,dp(i, j, k)表示考虑i位数,每位数可以任意取[0~9],并且这i位数的交错和为j,k=1表示前缀全是0(如000456),k=0表示前缀不为0.注意,前缀是否为0是这道题的一 ...

  6. hihocoder #1580 : Matrix (DP)

    #1580 : Matrix 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 Once upon a time, there was a little dog YK. On ...

  7. HihoCoder 1063 : 缩地 树形DP第二题(对象 边)

    时间限制:12000ms 单点时限:1000ms 内存限制:256MB 描述 编织者是 Dota 系列中的一个伪核,拥有很强的生存能力和线上消耗能力.编织者的代表性技能是缩地.缩地带来的隐身.极限移动 ...

  8. HihoCoder - 1044 状压DP 初步

    本题主要难在状态的转移 定义\(dp[i][j]:\)前\(i\)个中\(j\)集合范围内的最优解 \(j\)定义为\(p_1,p_2,...,p_{m-1}\),若第\(i-j+1\)个选定,则\( ...

  9. 动态规划:高维DP

    例子当然是王八棋这道题,这道题以前是写烂了 先来一个大暴力,zlw教的暴力~~ #include<iostream> using namespace std; ,maxm=; ]; int ...

随机推荐

  1. php党 强烈推荐TIPI:深入理解PHP内核

    深入理解PHP内核(Thinking In PHP Internals) TIPI项目是一个自发项目, 项目主要关注PHP的内部实现, 以及PHP相关的方方面面, 该项目包括<深入理解PHP内核 ...

  2. python#模拟发送电子邮件

    #-*- coding:utf-8 -*- #模拟发送电子邮件 from email.mime.text import MIMEText from_addr = 'aa@sss.com' passwo ...

  3. Intellij idea 切换SVN路径

    一直不懂如何切换路径,每次都是删除---->检出:本地源码都不能保存下来,非常麻烦 //在idea中svn切换到新分支:[vcs] -> [subversion] -> [updat ...

  4. j2EE的web.xml详解

    https://blog.csdn.net/changqing5818/article/details/49928231 https://www.cnblogs.com/ClassNotFoundEx ...

  5. hdu3579(线性同余方程组)

    Hello Kiki Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  6. pip源提示“not a trusted or secure host” 解决

    问题:The repository located at mirrors.aliyun.com is not a trusted or secure host and is being ignored ...

  7. 【BZOJ4894】天赋 有向图生成树计数

    [BZOJ4894]天赋 Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有一些天赋必须是要有前置天赋才能够学习得到的.也就是 ...

  8. java web Listener的简单使用案例

    1.web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= ...

  9. HealthKit详解

    1. 导入HealthKit框架 #import <HealthKit/HealthKit.h> 2. 判断设备是否支持HealthKit HealthKit是iOS8加入的API Hea ...

  10. Java语言实现简单FTP软件------>本地文件管理模块的实现(九)

    首先看一下界面: 1.本地文件列表的显示功能 将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改当前文件目录 ...