BZOJ 3203 sdoi 2013 保护出题人
由于样例解释很清晰,所以很容易得到以下结论:
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 保护出题人相关推荐
- [bzoj3203][SDOI2013]保护出题人
3203: [Sdoi2013]保护出题人 Time Limit: 3 Sec Memory Limit: 128 MB Submit: 389 Solved: 218 [Submit][Status ...
- [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)
多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...
- BZOJ 3203 Luogu P3299 [SDOI2013]保护出题人 (凸包、斜率优化、二分)
惊了,我怎么这么菜啊.. 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=3203 (luogu)https://www.lu ...
- BZOJ 3203 Sdoi2013 保护出题人 凸包+三分
题目大意:太长自己看 令sumi表示第i个僵尸以及之前的僵尸的体力总和.disi表示第i个僵尸与房屋的初始距离 我们发现我们能消灭一个僵尸当且仅当y>=sumidisi 那么我们要求的显然就是m ...
- [BZOJ3203][SDOI2013]保护出题人(凸包+三分)
https://www.cnblogs.com/Skyminer/p/6435544.html 先不要急于转化成几何模型,先把式子化到底再对应到几何图形中去. 1 #include<cstdio ...
- bzoj3203: [Sdoi2013]保护出题人
我三分这么好吗居然1A啦???提交的时候只是想着先WA一次的.... 这题真的很妙啊 首先第一步,就是把僵尸的生命值取一个前缀和,这样造成伤害的时候,可以视为同时对所有僵尸造成伤害. 那么就可以得到一 ...
- bzoj3203 [Sdoi2013]保护出题人 凸包+二分
一开始以为丧尸可以挡伤害,然后发现这个题目的设定非常** 然后就考虑每个丧尸到门口的时间,由于伤害是继承的,所以前缀和分配 然后答案=Σ(HP前缀和*速度/距离) 设 HP/l=k ,l=x+nd ...
- BAT华为美团头条面试考什么?这份GitHub万星资源,告诉你面试题+答案+出题人分析...
铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 2020校招脚步临近,怎样备战即将到来的面试,在众多面试者中脱颖而出惊艳到面试官,化身大厂Offer收割机? GitHub上就有这样一个万星 ...
- [BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)
[BZOJ 1879][SDOI 2009]Bill的挑战 Description Solution 1.考虑状压的方式. 方案1:如果我们把每一个字符串压起来,用一个布尔数组表示与每一个字母的匹配关 ...
最新文章
- weblogic创建域生产模式,输入用户名闪退
- 演示:通过实验取证IP报文的各个字段
- sql server2005 出现一个或多个参数无效
- Java字符串、文件MD5工具类
- boost::contract模块实现是否constexpr的测试程序
- Java Html转pdf实战
- oracle edit历史,OGG-00952---oracle goldengate无法purge历史表和mark表处理一例
- 20210627:力扣第247周周赛(上)
- 蚂蚁区块链第17课 错误码指导大全
- Arch + i3wm + i3lock-wrapper 毛玻璃锁屏
- 手机腾讯视频离线缓存ts格式文件合并为完整视频
- [数据挖掘案例]逻辑回归LR模型实现电商商品个性化推荐
- 2022年低压电工考试及低压电工模拟考试题库
- 吊打面试官了解一下?2021年字节跳动春招面试题详解(附详细答案)
- app模式会被第三方平台模式取代吗_第三方APP逐渐被替代?网友:手机自带的足够用了...
- 数据科学的重要支柱——统计学的最佳入门书籍
- 国王分金币(超详细版)
- 从零开始创建自己的区块链应用(JAVA版)
- 差动保护类毕业论文文献包含哪些?
- EasyNVR网页摄像机直播方案H5前端构建之:如何播放HLS
热门文章
- 半径为r的均匀带电球体_半径为R的均匀带电球面,总带电量为Q,设无穷远处的电势为零,则距离球心为r(r=R)的P点处的电场强度的大小和电势为...
- .NET Core 实例接口代理转发
- ubuntu服务器php7.2启用mysqli(不用reboot超简单)
- mysql在表的某一位置增加一列、删除一列、修改列名
- Linux系统下按了Ctrl+s锁定屏幕后怎么办?
- 23-Python3 File
- Linux CenOS Python3 和 python2 共存
- Madgwick算法详细解读
- Spring之使用外部属性文件
- 【网络流】【待补】C. Heidi and Library (hard)