• ACM HDU 4001 To Miss Our Children Time (2011ACM大连赛区网络赛)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4001

    本文作者:kuangbin   @SHU

    作者博客:www.cnblogs.com/kuangbin

    转载请注明出处。THX

    题意:
    小孩子玩积木堆房子的情景:
    每组测试数据第一行给出n,代表接下来有n块砖;
    接下来n行,每行给出砖的长,宽,高,属性(a,b,c,d);
    属性d:d=0:该砖的长度和宽度(a,b)要比垫在他下面的砖的长,宽大或者相等;就是长>=长,宽>=宽
    d=1:改砖的宽度和长度要比下面的砖的长度大或者相等,同时,该砖的宽度值和面积值要比下面的砖的面积值大;即长>=长,宽>=宽,面积>面积。也就是长>=长&&宽>=宽&&(长>长||宽>宽)

    d=2:该砖的长度和宽度(a,b)要比垫在他下面的砖的长,宽大(严格大于);长>长,宽>宽。
    要求输出该给出的所有的砖块所能听堆砌的最大高度。

    比赛时没有想到,看了同校的大牛做出来的代码之后恍然大悟。原来按照长、宽排一下序,然后DP解决。

    代码很清楚简洁了。。看代码吧!

     

    看代码:

    #include <iostream>
    #include
    <algorithm>
    using namespace std;

    struct rec
    {
    int l,w,c,d;
    }d[
    1100];
    int cmp(const void *a,const void *b)//先按长再按宽从小到大排序
    {
    rec t1,t2;
    t1
    = *(rec *)a;
    t2
    = *(rec *)b;
    if(t1.l != t2.l)return t1.l - t2.l;
    if(t1.w != t2.w)return t1.w - t2.w;
    return t2.d - t1.d;
    }
    int n ;
    long long f[1100],ans;

    int main()
    {
    while(~scanf("%d",&n)&&n)
    {
    for(int i = 1;i <= n; i ++)
    {
    scanf(
    "%d %d %d %d",&d[i].l,&d[i].w,&d[i].c,&d[i].d);
    if(d[i].l<d[i].w)swap(d[i].l,d[i].w);
    }
    qsort(
    &d[1],n,sizeof(d[1]),cmp);
    ans
    = 0 ;
    for(int i = 1;i <= n; i ++)//DP
    {
    f[i]
    = d[i].c;
    for(int j = 1; j < i ; j ++)
    {
    if(d[i].d == 0 && d[i].w >= d[j].w && d[i].l >= d[j].l)
    {
    f[i]
    = max(f[i],f[j]+d[i].c);
    }
    if(d[i].d == 1 && d[i].w >= d[j].w && d[i].l >= d[j].l && (d[i].w > d[j].w || d[i].l > d[j].l))//ok
    {
    f[i]
    = max(f[i],f[j]+d[i].c);
    }
    if(d[i].d == 2 && d[i].w > d[j].w && d[i].l > d[j].l)//ok
    {
    f[i]
    = max(f[i],f[j]+d[i].c);
    }
    }
    if(f[i] > ans)ans = f[i];
    }
    cout
    << ans << endl;
    }
    return 0;
    }


     

  • 相关阅读:
    博客园博客
    mongo
    函数式编程与面向对象编程的对比
    python_字典dict要点总结
    pyhon_列表、元组要点总结
    vue-element框架通过blob进行后端token权限验证下载
    node-本地搭建服务
    (转载)测试用例标准
    soapUI学习笔记--用例字段参数化
    soapUI学习笔记---断言的小使用
  • 原文地址:https://www.cnblogs.com/kuangbin/p/2165855.html
Copyright © 2020-2023  润新知