传送门

不得不说这题有点东西啊。


看到题第一眼二分,用二次函数求范围来进行checkcheckcheck,20分滚粗了233.

于是开始思考正解。

发现可以把每只怪物的二元组属性看成二维坐标。

这时对于一只怪物(x,y)(x,y)(x,y),一种环境相当于是一条过了点(x,y)(x,y)(x,y)的直线,贡献就是在横纵坐标的截距之和。

观察之后很容易发现答案只跟所有点的右上凸壳有关系。

于是我们维护所有点的上凸壳。

然后依次找每个点对答案的贡献就行了。

代码:

#include<bits/stdc++.h>
#define db double
#define N 1000005
using namespace std;
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int n,q[N],top=0;
struct pot{db x,y;}p[N];
const double inf=2e9,eps=1e-10;
inline bool cmp(const pot&a,const pot&b){return a.x==b.x?a.y<b.y:a.x<b.x;}
inline double calc(const pot&a,double k){return a.x+a.y+a.x*k+a.y/k;}
inline double slope(const pot&a,const pot&b){return (a.y-b.y)/(a.x-b.x);}
inline pot operator-(const pot&a,const pot&b){return (pot){a.x-b.x,a.y-b.y};}
inline double operator^(const pot&a,const pot&b){return a.x*b.y-a.y*b.x;}
inline double solve(){
	double ret=inf,l=-inf,r,k;
	for(int i=1;i<=top;++i){
		r=l,l=i==top?-eps:slope(p[q[i]],p[q[i+1]]),k=-sqrt(p[q[i]].y/p[q[i]].x);
		if(l<=k&&k<=r)ret=min(ret,calc(p[q[i]],-k));
		else ret=min(ret,calc(p[q[i]],-l)),ret=min(ret,calc(p[q[i]],-r));
	}
	return ret;
}
int main(){
	n=read();
	for(int i=1;i<=n;++i)p[i].x=read(),p[i].y=read();
	sort(p+1,p+n+1,cmp);
	for(int i=n;i;--i){
		while(top>2&&((p[i]-p[q[top-1]])^(p[q[top]]-p[q[top-1]]))>=0)--top;
		q[++top]=i;
	}
	while(top>1&&p[q[top]].y<=p[q[top-1]].y)--top;
	printf("%.4lf",solve());
	return 0;
}

2018.10.15 bzoj4570: [Scoi2016]妖怪(凸包)的更多相关文章

  1. [BZOJ4570][SCOI2016]妖怪(凸包)

    两种做法,前一种会TLE. 第一种是高一数学题做法,设一个妖怪的atk和dnf分别为x和y,则它在(a,b)环境下的战斗力为x+y/a*b+y+x/a*b. 设t为b/a,则战斗力即$f(x,y,t) ...

  2. [Bzoj4570][Scoi2016]妖怪(右上凸包)

    4570: [Scoi2016]妖怪 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1110  Solved: 336[Submit][Status][ ...

  3. BZOJ4570: [Scoi2016]妖怪

    题目传送门 4570: [Scoi2016]妖怪 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 491 Solved: 125 [Submit][Sta ...

  4. bzoj 4570: [Scoi2016]妖怪 凸包

    题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4570 题解 我们知道如果一个怪物要取到攻击力的最大值,那么一定是把防御力都转化了 所以我 ...

  5. BZOJ4570 SCOI2016妖怪(三分)

    strength=atk*(1+b/a)+dnf*(1+a/b).设a/b=x,可以发现这是一个关于x的对勾函数.开口向上的一堆凸函数取max还是凸函数,三分即可. 然而无良出题人既卡精度又卡时间.众 ...

  6. 梦想CAD控件 2018.10.15更新

    下载地址: http://www.mxdraw.com/ndetail_10105.html 1. 完善com接口的ToCurves函数,转换CAD文字,多行文字到曲线 2. 修改DrawImage接 ...

  7. 2018.10.15 bzoj3564: [SHOI2014]信号增幅仪(坐标处理+最小圆覆盖)

    传送门 省选考最小圆覆盖? 亦可赛艇(你们什么都没看见) 在大佬的引领下成功做了出来. 就是旋转坐标使椭圆的横轴跟xxx轴平行. 然后压缩横坐标使得其变成一个圆. 然后跑最小覆盖圆就可以了. 注意题目 ...

  8. 2018.10.15 bzoj4445: [Scoi2015]小凸想跑步(半平面交)

    传送门 话说去年的省选计算几何难度跟前几年比起来根本不能做啊(虽然去年考的时候并没有学过计算几何) 这题就是推个式子然后上半平面交就做完了. 什么? 怎么推式子? 先把题目的概率转换成求出可行区域. ...

  9. 2018.10.15 NOIP训练 hyc的等比数列(数论+枚举)

    传送门 一道不错的枚举题. 显然桶排序之后瞎枚举一波. 考虑枚举首项和末项,假设首项除去一个最大的平方因子得到的结果为xxx. 那么末项一定等于xxx乘上一个平方数. 于是我们枚举首项,算出xxx然后 ...

随机推荐

  1. docker学习笔记 参考

    https://www.cnblogs.com/YDDMAX/p/6045079.html 参考此人播客:docker 分类 http://www.cnblogs.com/51kata/categor ...

  2. 关于jquery的cookie的顺序,应首先是jQuery的引用,然后是cookie引用,否则系统无反应

    <script src="../Scripts/jquery-1.4.1.js" type="text/javascript" ></scri ...

  3. 转发 DDoS攻防战 (一) : 概述

     岁寒 然后知松柏之后凋也   岁寒 然后知松柏之后凋也 ——论语·子罕 (此图摘自<Web脚本攻击与防御技术核心剖析>一书,作者:郝永清先生)    DDoS,即 Distributed ...

  4. H5特性回顾

    canvas 绘画, video 媒介回放 audio元素 对本地离线存储的更好支持, 新的特殊内容 - 元素 比如 article,footer,header,nav,section, 新的表单控件 ...

  5. Jsonlib 属性过滤器

    /** * @title JSON转换属性过滤器 * @description 用于JSON lib的JSON转换 * @author maohuidong * @date 2017-04-06 */ ...

  6. sessionStorage和localStorage

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...

  7. 自己整理lnmp安装

    1. 操作系统   CentOS release 6.5(final)   2. 安装mysql   # yum install mysql-server   #vi /etc/my.cnf +def ...

  8. 'org.hibernate.SQLQuery' is deprecated

    'org.hibernate.SQLQuery' is deprecated 在Hibernate5.2之后,SQLQuery已经被摒弃,改用NativeQuery代替了. 在Hibernate中使用 ...

  9. x86汇编知识点汇总

    目录: 1.进制转换 2.原码.反码.补码 3.寄存器 4.存储器的段结构 5.堆栈 6.传送类指令 7.算术运算类指令(不含乘除) 8.位操作类指令 9.标志位操作指令 10.标识符.常量与变量 1 ...

  10. Mac下MySQL卸载方法

    mac下mysql的DMG格式安装内有安装文件,却没有卸载文件……很郁闷的事.1 sudo rm /usr/local/mysql2 sudo rm -rf /usr/local/mysql*3 su ...