BZOJ 3203 Sdoi2013 保护出题人 凸包+三分
2015-06-10 11:02
411 查看
题目大意:太长自己看
令sumisum_i表示第ii个僵尸以及之前的僵尸的体力总和,disidis_i表示第ii个僵尸与房屋的初始距离
我们发现我们能消灭一个僵尸当且仅当y>=sumidisiy>=\frac{sum_i}{dis_i}
那么我们要求的显然就是max{sumidisi}max\{\frac{sum_i}{dis_i}\}
我们将一个僵尸抽象成一个点sumidisi\frac{sum_i}{dis_i},那么我们发现每个回合僵尸之间的相对位置是不变的
因此我们可以维护一个凸包,三分即可
令sumisum_i表示第ii个僵尸以及之前的僵尸的体力总和,disidis_i表示第ii个僵尸与房屋的初始距离
我们发现我们能消灭一个僵尸当且仅当y>=sumidisiy>=\frac{sum_i}{dis_i}
那么我们要求的显然就是max{sumidisi}max\{\frac{sum_i}{dis_i}\}
我们将一个僵尸抽象成一个点sumidisi\frac{sum_i}{dis_i},那么我们发现每个回合僵尸之间的相对位置是不变的
因此我们可以维护一个凸包,三分即可
[code]#include <cstdio> #include <cstring> #include <iomanip> #include <iostream> #include <algorithm> #define M 100100 #define EPS 1e-7 using namespace std; typedef long double ld; struct Point{ ld x,y; Point() {} Point(ld _,ld __): x(_),y(__) {} friend ld Get_Slope(const Point &p1,const Point &p2) { return (p1.y-p2.y)/(p1.x-p2.x); } }O,stack[M];int top; int n; long long d,a[M],sum[M]; ld ans; void Insert(const Point &p) { while( top>=2 && Get_Slope(stack[top-1],stack[top]) >= Get_Slope(stack[top],p) - EPS ) top--; stack[++top]=p; } ld Trisection() { int i,l=1,r=top; while(r-l>=3) { int l_mid=(l+l+r)/3,r_mid=(l+r+r)/3; ld _l=Get_Slope(stack[l_mid],O); ld _r=Get_Slope(stack[r_mid],O); if(_l>_r) r=r_mid; else l=l_mid; } ld re=0; for(i=l;i<=r;i++) re=max(re,Get_Slope(stack[i],O)); return re; } int main() { int i; long long x; cin>>n>>d; for(i=1;i<=n;i++) { #ifdef PoPoQQQ scanf("%I64d%I64d",&a[i],&x); #else scanf("%lld%lld",&a[i],&x); #endif sum[i]=sum[i-1]+a[i]; Insert(Point(i*d,sum[i-1])); O=Point(i*d+x,sum[i]); ans+=Trisection(); } cout<<fixed<<setprecision(0)<<ans<<endl; return 0; }
相关文章推荐
- 鼠标移到元素上显示提示信息
- GridView的标准写法
- WPF 颜色
- shell学习第七天----基础正则表达式(BRE)
- cocoStudio: button触摸事件响应
- C++构造函数为什么不能是虚函数
- 企业证书APP发布流程
- android底层开发系列helloworld
- 一步一步学linux多线程编程
- hbase
- (四)SSO之CAS框架单点登录,自定义验证登录方式
- Android Studio "ADB not responding"
- 企业证书APP发布流程 分类: ios相关 app相关 2015-06-10 11:01 212人阅读 评论(0) 收藏
- DBCA建库注意一些问题---个人总结
- android 多线程异步类asynctask 浅析
- 有什么方法快速的将小硬盘对拷到大硬盘
- WPF 如何在文本外面加虚线外框
- TFS分析(基于1.3.1) -- BlockId 的生成
- 对于Ext grid每列鼠标悬浮的数据信息显示处理
- 陈怡暖:API库存锐减提振油价,EIA接棒下一行情机会