标签:should recently typedef def region fill cte connect http
地址:http://poj.org/problem?id=1434
Time Limit: 5000MS | Memory Limit: 10000K | |
Total Submissions: 4131 | Accepted: 1360 |
Description
Input
Output
Sample Input
3 2 0 1 1 1 2 1 1 1 1 4 11 7 5 1 15 6 2 2 5 8 5 1 19 4 8 1 132 4 11 7 5 1 15 6 2 2 5 8 5 1 19 4 8 1 78
Sample Output
1.00 OVERFLOW 17.00
Source
1 #include <cstdio> 2 #include <algorithm> 3 #include <cstring> 4 #include <cmath> 5 6 using namespace std; 7 8 #define MP make_pair 9 #define PB push_back 10 #define lc (o<<1) 11 #define rc (o<<1|1) 12 typedef long long LL; 13 typedef pair<int,int> PII; 14 const double eps=1e-8; 15 const double pi=acos(-1.0); 16 const int K=5e4+7; 17 const int mod=1e9+7; 18 19 struct node 20 { 21 double b,h,s; 22 bool operator < (const node &ta) const 23 { 24 return b<ta.b; 25 } 26 }cis[K]; 27 int n; 28 double v; 29 int sgn(double ta,double tb) 30 { 31 if(fabs(ta-tb)<eps) return 0; 32 return ta<tb?-1:1; 33 } 34 bool check(double x) 35 { 36 double ret=0; 37 for(int i=1;i<=n;i++) 38 { 39 if(sgn(cis[i].b,x)>0) break; 40 ret+=cis[i].s*min(cis[i].h,x-cis[i].b); 41 } 42 return sgn(ret,v)>=0; 43 } 44 int main(void) 45 { 46 int t; 47 scanf("%d",&t); 48 while(t--) 49 { 50 scanf("%d",&n); 51 double sum=0,l=1e9,r=-1e9; 52 for(int i=1;i<=n;i++) 53 { 54 double b,h,w,d; 55 scanf("%lf%lf%lf%lf",&b,&h,&w,&d); 56 cis[i]=(node){b,h,w*d}; 57 sum+=h*w*d; 58 l=min(l,b),r=max(r,b+h); 59 } 60 sort(cis+1,cis+1+n); 61 scanf("%lf",&v); 62 if(sgn(v,sum)>0) 63 { 64 printf("OVERFLOW\n"); 65 continue; 66 } 67 while(r-l>0.001) 68 { 69 double mid=(l+r)/2; 70 if(check(mid)) 71 r=mid; 72 else 73 l=mid; 74 } 75 printf("%.2f\n",l); 76 } 77 return 0; 78 }
标签:should recently typedef def region fill cte connect http
原文地址:http://www.cnblogs.com/weeping/p/7652364.html