糯米

TI DaVinci, gstreamer, ffmpeg
随笔 - 167, 文章 - 0, 评论 - 47, 引用 - 0
数据加载中……

POJ 1434 Fill the Cisterns!

回家待了几天,我觉得再继续颓废下去也不是个办法。还是得他妈的振作!振作!
跟以前一样,按照计划行事。
每天2题,难度随意。做不出来绝对不死磕,找标程或者数据弄懂再说。管他妈什么算法,我只管写代码。
项目紧的时候做项目,不紧的时候看点代码或者写点代码,啥都行,主要是保持一个感觉。
剩下的时间就练吉他。

今天开始做了第一题,结果悲剧。
我日你妈poj,能不能不要他妈的加数据,为啥子官方数据都过了还是过不了你那的。。

#include <stdio.h>
#include 
<stdlib.h>

#define MAX_N 50032

int K, N, V;
struct node {
    
int base, area, sign;
};

struct node arr[MAX_N*2];

int cmp(const void *a, const void *b)
{
    
return ((struct node *)a)->base - ((struct node *)b)->base;
}

int main()
{
    
int b, h, w, d, i, a, v;

    scanf(
"%d"&K);
    
while (K--) {
        scanf(
"%d"&N);
        
for (i = 0; i < N; i++) {
            scanf(
"%d%d%d%d"&b, &d, &w, &h);
            arr[i
*2].base = b;
            arr[i
*2].area = w * h;
            arr[i
*2].sign = 1;
            arr[i
*2 + 1].base = b + d;
            arr[i
*2 + 1].area = w * h;
            arr[i
*2 + 1].sign = -1;
        }
        scanf(
"%d"&V);
        qsort(arr, N
*2sizeof(arr[0]), cmp);

        a 
= 0;
        
for (i = 0; i < N*2; i++) {
            v 
= i ? a * (arr[i].base - arr[i - 1].base) : 0;
            
if (V <= v) {
                printf(
"%.2lf\n", (double)V / a + arr[i - 1].base);
                
break;
            }
            V 
-= v;
            a 
+= arr[i].sign * arr[i].area;
        }
        
if (i == N*2)
            printf(
"OVERFLOW\n");
    }

    
return 0;
}


posted on 2010-07-20 21:48 糯米 阅读(507) 评论(0)  编辑 收藏 引用 所属分类: POJ


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理