HDU 4001 To Miss Our Children Time

原创 2012年03月24日 21:38:20

一开始我一直想的是简单图论问题,构图SPFA求最长路,发现这样做有环不好处理。比如这组样例:

2
1 1 1 0
1 1 1 0


构图就会有环,不能直接SPFA,tarjan缩点的话应该可以做,但是代码量就太大了。

可以这样去处理:

bool cmp(block a,block b) 

    if(a.x!=b.x)return a.x<b.x; 

    if(a.y!=b.y)return a.y<b.y; 

    return a.d>b.d; 

void build()

{

   //缩点,避免产生环

   sort(x,x+n,cmp);

   int cnt=1;

   y[1]=x[0];

   for(int i=1;i<n;i++)

   {

      if(x[i].d==0&&x[i].d==x[i-1].d&&x[i].a==x[i-1].a&&x[i].b==x[i-1].b)

      {

         y[cnt].c+=x[i].c;

      }

      else

      {

         cnt++;

         y[cnt]=x[i];

      }

   }

   n=cnt;

或者在枚举边时用上并查集消环http://blog.csdn.net/jxy859/article/details/6746160

其实直接DP就可以做了。

比较函数如下

bool cmp(block a,block b) 

    if(a.x!=b.x)return a.x<b.x; 

    if(a.y!=b.y)return a.y<b.y; 

    return a.d>b.d; 

这样排序之后,可以知道排在前面的不可能放在后面的上面,接下来dp就是一个n^2的过程,比较好写。http://blog.csdn.net/xymscau/article/details/6773117

这个题trick有两个:

长和宽可以交换,所以方便起见,用长的做长,短的为宽

总高度和求面积时有可能超int,所以用long long

相关文章推荐

hdu 4001 dp To Miss Our Children Time

题意: 小孩子玩积木堆房子的情景: 每组测试数据第一行给出n,代表接下来有n块砖; 接下来n行,每行给出砖的长,宽,高,属性(a,b,c,d); 属性d:d=0:该砖的长度和宽度(a,b)要比...

hdu 4001 To Miss Our Children Time DP

题目链接:hdu 4001

HDU--4001[To Miss Our Children Time] 排序+SPFA

思路: 把所有长方体先按照一定的规则排好序,然后遍历任意两个长方体u,v。如果u能放在v的上面,则连一条u->v权值为v的高度的边。然后添加一个超级源点scr,对于每个点i,连一条从scr到i权值为...

HDU_4001_To miss our children time_动态规划

今天用师兄的机械键盘打比赛感觉

HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)

开始还觉得是贪心呢。。。 给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面 d=1:你只能把...

HDU 4001 To Miss Our Children Time(DP LIS)

题目大意:给定一些木块的长宽高及其编号, 1、如果编号为0,则应该满足当前木块长(&&宽)>=下边的木块长(宽) 2、如果编号为1,则应该满足当前木块长(&&宽)>=下边的木块长(宽)&&面积也比...

HDU 4001 To Miss Our Children Time [2011 大连网络赛] [DP]

题意: 堆积木~~~ d=0:该砖的长度和宽度(a,b)要比垫在他下面的砖的长,就是长>=长,宽>=宽 d=1:改砖的宽度和长度要比下面的砖的长度大或者相等,同时,该砖的宽度值和面积...

HDU 4001 To Miss Our Children Time 最长路, DP

/* 最长路实现 */ #include #include #include #include #include #include #include #include #include #inc...

hdu 4001 To Miss Our Children Time

#include #include #include #include #define maxn 1010 #define LL __int64 using namespace std; int n;...

The 36th ACM/ICPC Asia Regional Dalian Site —— Online Contest &&To Miss Our Children Time

http://acm.hdu.edu.cn/showproblem.php?pid=4001 Problem Description Do you remember our children ti...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 4001 To Miss Our Children Time
举报原因:
原因补充:

(最多只允许输入30个字)