HLOJ430 构建双塔

1人阅读 评论(0) 收藏 举报
分类:

题意

用一些有固定高度的方块堆成两座相同高度的塔,问塔最高高度。

状态转移方程

双进程dp

f[j][k]jk

我们可以轻易得出:
f[j][k]=f[ja[i]][k]  ||  f[j][ka[i]]

code

#include<bits/stdc++.h>
using namespace std;
inline int read()
{
    int num = 0;
    char c = ' ';
    bool flag = true;
    for(;c > '9' || c < '0';c = getchar())
    if(c == '-')
    flag = false;
    for(;c >= '0' && c <= '9';num = num*10+c-48,c=getchar());
    return flag ? num : -num;
}
const int maxn=105;
int n,a[maxn],sum=0;
void init()
{
    n=read();
    for(int i=1;i<=n;i++)
        a[i]=read(),sum+=a[i];
}
const int max_height=2020;
bool f[max_height][max_height];
void DP()
{
    f[0][0]=true;
    for(int i=1;i<=n;i++)
        for(int j=sum-a[i];j>=0;j--)
            for(int k=sum-a[i];k>=0;k--)
                if(f[j][k])
                {
                    f[j+a[i]][k]=f[j][k+a[i]]=true;
                }
    for(int i=sum/2;i>=1;i--)
        if(f[i][i])
        {
            printf("%d\n",i);
            exit(0);
        }
    printf("Impossible\n");
}
int main()
{
    init();
    DP();
    return 0;
}
查看评论

VIJOS P1037搭建双塔 【双塔DP】

dp[i][j]: 代表合理利用前i个水晶建造两座塔,较高的塔比较低的塔高j时,较高的塔的高度。 每次转移考虑三种情况,不选用第i个,或者分别放在较高的塔上、较低的塔上。#include using...
  • xinag578
  • xinag578
  • 2017-02-04 21:14:51
  • 293

vijos1037 搭建双塔-状态优化dp

传送门 题目大意:自行参考 题解: 这个题非常适合初学者思考!!! 建议不要看题解,先想一想基本方法,在一步步优化。 好我开始说。 我们先只考虑“能否达到”的问题(因为一开始我是从ppt上...
  • Mys_C_K
  • Mys_C_K
  • 2017-05-25 20:11:27
  • 193

vijos搭建双塔(dp)

数据弱,朴素的算法竟然过了,后来bitset位运算的01背包优化加上后快了7倍//顺便还练习了一下对拍 f【i】【j】=true,表示塔1高为i,塔2高为j,的情况存在 方程 if (dp[j]...
  • zhhx2001
  • zhhx2001
  • 2016-05-28 17:10:32
  • 574

POJ-2609-双塔dp

题目大意:有n辆汽车需要运载到船上,船上有两块甲板A,B,长度都是L,n辆汽车必须一次上去,问最多能运几辆车。 题目解析:先预处理前缀和,定义dp[i][j],表示前i辆车,A甲板用的长度为j能否满...
  • zyz_3_14159
  • zyz_3_14159
  • 2017-04-29 15:33:03
  • 139

vijos P1354 Hanoi双塔问题

题意: 链接: 思路: 注意点: 以下为AC代码: 评测状态 Accepted 题目 P1354 Hanoi双塔问题 递交时间 2014-11-07...
  • luminous11
  • luminous11
  • 2014-11-18 16:53:03
  • 917

Sicily 1485. Hanoi双塔问题

易得公式 2^(n+1) - 2 ,本想直接用模板,一想很久没写高精度,练练手,果然生疏了....o(╯□╰)o #include #include using namespace std;...
  • jcjc918
  • jcjc918
  • 2013-07-24 17:25:17
  • 3608

|Vijos|动态规划|P1037 搭建双塔

原文地址:http://blog.csdn.net/ly59782/article/details/52057877 描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷...
  • Darost
  • Darost
  • 2016-08-28 10:30:34
  • 451

noip2007 Hanoi双塔问题 (动态规划,汉诺塔问题,高精乘低精)

A1162. 汉诺双塔 时间限制:1.0s   内存限制:256.0MB   总提交次数:1164   AC次数:360   平均分:51.25 将本题分享到:    ...
  • yuyanggo
  • yuyanggo
  • 2015-09-19 09:43:40
  • 2066

双塔问题

背景 从前,有一个古老的帝国有两个形状不同的塔分别在不同的两个城市里。这两个塔是用圆形的砖一块一块建成的。这些圆形砖的高度是一样的,其半径都是整数。很明显,尽管这两个塔形状不同,但造塔所使用的圆形砖却...
  • u013213742
  • u013213742
  • 2014-10-04 18:06:57
  • 1394

P1354 Hanoi双塔问题

hanoi双塔。。 公式:(单个:2^n-1) 两个乘2 从n=1开始推 n的值 所需次数 1 2 1=>3,1=>3 2 6 1=>2,1=>2,1=>3,1=>3,2=>3,2=>3 ...
  • zjy2015302395
  • zjy2015302395
  • 2017-01-20 09:26:14
  • 411
    博客专栏
    数论

    文章:16篇

    阅读:1734
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 1万+
    积分: 1454
    排名: 3万+
    友情链接!