读书人

HDU 4768Flyer(2分 自己思维太死了)

发布时间: 2013-10-02 13:10:38 作者: rapoo

HDU 4768Flyer(二分 自己思维太死了)

FlyerTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 902 Accepted Submission(s): 306


Problem DescriptionInputOutputSample InputSample OutputSourceRecommend#include<iostream>#include<cstring>#include<cmath>#include<cstdio>using namespace std;__int64 a[20005],b[20005],c[20005];int n;__int64 cal(__int64 x){ int i; __int64 sum=0; for(i=0;i<n;i++) { __int64 mi=min(b[i],x); if(mi>=a[i]) sum+=(mi-a[i])/c[i]+1; } return sum;}int main(){ int i; while(~scanf("%d",&n)) { for(i=0;i<n;i++) scanf("%I64d%I64d%I64d",&a[i],&b[i],&c[i]); __int64 l,r,mid; l=1,r=1LL<<31; mid=(l+r)>>1; while(l<r) { if(cal(mid)%2==0) l=mid+1; else r=mid; mid=(l+r)>>1; //printf("%I64d %I64d %I64d\n",l,r,mid); } if(cal(mid)%2==0) puts("DC Qiang is unhappy."); else printf("%I64d %I64d\n",mid,cal(mid)-cal(mid-1)); } return 0;}//46MS


读书人网 >编程

热点推荐