回家待了几天,我觉得再继续颓废下去也不是个办法。还是得他妈的振作!振作!
跟以前一样,按照计划行事。
每天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*2, sizeof(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;
}