由于样例解释很清晰,所以很容易得到以下结论:

1、每一关都是独立的,且僵尸的相对位置不会变

2、每一关的攻击力=Max(sum(i)/dis(i))

其实sum(i)是僵尸攻击力的前缀和,dis(i)是距离

然后因为输入是每次在队头添加,所以我们可以把前缀和转换成后缀和

攻击力=Max( (sum_i-sum_j)/(x_i+i*d-j*d) )

这显然是一个斜率的式子,又因为僵尸的相对位置不变

所以我们可以维护一个下凸壳,之后每次在凸壳上三分最优解即可

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#define eps 1e-8
using namespace std;const int maxn=100010;
int n,top=0,cur;
double d,ans;
double A[maxn],X[maxn];
double sum[maxn];
struct Point{double x,y;Point(double x=0,double y=0):x(x),y(y){}
};
Point st[maxn];
typedef Point Vector;
Vector operator -(const Point &A,const Point &B){return Vector(A.x-B.x,A.y-B.y);}
double Cross(const Point &A,const Point &B){return A.x*B.y-A.y*B.x;}double F(int x){return (sum[cur]-st[x].y)/(X[cur]+cur*d-st[x].x);
}int main(){scanf("%d%lf",&n,&d);for(int i=1;i<=n;++i)scanf("%lf%lf",&A[i],&X[i]),sum[i]=sum[i-1]+A[i];for(int i=1;i<=n;++i){Point now=Point(d*i,sum[i-1]);while(top>=2&&Cross(now-st[top],st[top]-st[top-1])>eps)top--;st[++top]=now;cur=i;int L=1,R=top;while(R-L>=3){int m1=(L+L+R)/3,m2=(L+R+R)/3;if(F(m1)>F(m2))R=m2;else L=m1;}double sum=-1e18;for(int j=L;j<=R;++j)sum=max(sum,F(j));ans+=sum;//printf("%.8lf\n",sum);}printf("%.0lf\n",ans);return 0;
}

  

转载于:https://www.cnblogs.com/joyouth/p/5350647.html

BZOJ 3203 sdoi 2013 保护出题人相关推荐

  1. [bzoj3203][SDOI2013]保护出题人

    3203: [Sdoi2013]保护出题人 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 389 Solved: 218 [Submit][Status ...

  2. [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

    多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...

  3. BZOJ 3203 Luogu P3299 [SDOI2013]保护出题人 (凸包、斜率优化、二分)

    惊了,我怎么这么菜啊.. 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=3203 (luogu)https://www.lu ...

  4. BZOJ 3203 Sdoi2013 保护出题人 凸包+三分

    题目大意:太长自己看 令sumi表示第i个僵尸以及之前的僵尸的体力总和.disi表示第i个僵尸与房屋的初始距离 我们发现我们能消灭一个僵尸当且仅当y>=sumidisi 那么我们要求的显然就是m ...

  5. [BZOJ3203][SDOI2013]保护出题人(凸包+三分)

    https://www.cnblogs.com/Skyminer/p/6435544.html 先不要急于转化成几何模型,先把式子化到底再对应到几何图形中去. 1 #include<cstdio ...

  6. bzoj3203: [Sdoi2013]保护出题人

    我三分这么好吗居然1A啦???提交的时候只是想着先WA一次的.... 这题真的很妙啊 首先第一步,就是把僵尸的生命值取一个前缀和,这样造成伤害的时候,可以视为同时对所有僵尸造成伤害. 那么就可以得到一 ...

  7. bzoj3203 [Sdoi2013]保护出题人 凸包+二分

    一开始以为丧尸可以挡伤害,然后发现这个题目的设定非常** 然后就考虑每个丧尸到门口的时间,由于伤害是继承的,所以前缀和分配 然后答案=Σ(HP前缀和*速度/距离)  设 HP/l=k ,l=x+nd ...

  8. BAT华为美团头条面试考什么?这份GitHub万星资源,告诉你面试题+答案+出题人分析...

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 2020校招脚步临近,怎样备战即将到来的面试,在众多面试者中脱颖而出惊艳到面试官,化身大厂Offer收割机? GitHub上就有这样一个万星 ...

  9. [BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)

    [BZOJ 1879][SDOI 2009]Bill的挑战 Description Solution 1.考虑状压的方式. 方案1:如果我们把每一个字符串压起来,用一个布尔数组表示与每一个字母的匹配关 ...

最新文章

  1. weblogic创建域生产模式,输入用户名闪退
  2. 演示:通过实验取证IP报文的各个字段
  3. sql server2005 出现一个或多个参数无效
  4. Java字符串、文件MD5工具类
  5. boost::contract模块实现是否constexpr的测试程序
  6. Java Html转pdf实战
  7. oracle edit历史,OGG-00952---oracle goldengate无法purge历史表和mark表处理一例
  8. 20210627:力扣第247周周赛(上)
  9. 蚂蚁区块链第17课 错误码指导大全
  10. Arch + i3wm + i3lock-wrapper 毛玻璃锁屏
  11. 手机腾讯视频离线缓存ts格式文件合并为完整视频
  12. [数据挖掘案例]逻辑回归LR模型实现电商商品个性化推荐
  13. 2022年低压电工考试及低压电工模拟考试题库
  14. 吊打面试官了解一下?2021年字节跳动春招面试题详解(附详细答案)
  15. app模式会被第三方平台模式取代吗_第三方APP逐渐被替代?网友:手机自带的足够用了...
  16. 数据科学的重要支柱——统计学的最佳入门书籍
  17. 国王分金币(超详细版)
  18. 从零开始创建自己的区块链应用(JAVA版)
  19. 差动保护类毕业论文文献包含哪些?
  20. EasyNVR网页摄像机直播方案H5前端构建之:如何播放HLS

热门文章

  1. 半径为r的均匀带电球体_半径为R的均匀带电球面,总带电量为Q,设无穷远处的电势为零,则距离球心为r(r=R)的P点处的电场强度的大小和电势为...
  2. .NET Core 实例接口代理转发
  3. ubuntu服务器php7.2启用mysqli(不用reboot超简单)
  4. mysql在表的某一位置增加一列、删除一列、修改列名
  5. Linux系统下按了Ctrl+s锁定屏幕后怎么办?
  6. 23-Python3 File
  7. Linux CenOS Python3 和 python2 共存
  8. Madgwick算法详细解读
  9. Spring之使用外部属性文件
  10. 【网络流】【待补】C. Heidi and Library (hard)