题目链接

loj#2015. 「SCOI2016」妖怪

题解

对于每一项展开

的到\(atk+\frac{dnf}{b}a + dnf + \frac{atk}{a} b\)

令$T = \frac{a}{b} $

原式$=atk+Tdnf + dnf + \frac{atk}{T} $

这就是那个单峰的对勾函数,

把单峰函数复合为求最值,发现也是个单峰函数(下凸壳)

三分就好了

或者维护一个最大值得下凸壳

代码

  1. #include<cstdio>
  2. #include<algorithm>
  3. inline int read() {
  4. int x = 0,f = 1;
  5. char c = getchar();
  6. while(c < '0' || c > '9') c = getchar();
  7. while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
  8. return x * f;
  9. }
  10. #define db double
  11. const int maxn = 5000007;
  12. db atk[maxn],dnf[maxn];
  13. int n;
  14. db calc(db T) {
  15. double ret = 0.0;
  16. for(int i = 1;i <= n;++ i) {
  17. db tmp = dnf[i] + atk[i] + dnf[i] / T + atk[i] * T;
  18. ret = std::max(tmp,ret);
  19. }
  20. return ret;
  21. }
  22. int main() {
  23. n = read();
  24. for(int i = 1;i <= n;++ i)
  25. scanf("%lf%lf",atk + i,dnf + i);
  26. db l = 0,r = 10.0;
  27. for(;r - l >= (1e-12);) {
  28. db m1 = l + (r - l) / 3.0,m2 = r - (r - l) / 3.0;
  29. db c1 = calc(m1),c2 = calc(m2);
  30. if(c1 > c2) l = m1;
  31. else r = m2;
  32. }
  33. printf("%.4lf\n",std::min(calc(r),calc(l))) ;
  34. return 0;
  35. }

loj#2015. 「SCOI2016」妖怪 凸函数/三分的更多相关文章

  1. LOJ#2015. 「SCOI2016」妖怪(凸包)

    传送门 首先可以把每个妖怪看成二维平面上的一个点,那么每一个环境\((a,b)\)就可以看成一条斜率\(k=-\frac{b}{a}\)的过该点的直线,战斗力就是这条直线在两坐标轴上的截距之和 对于每 ...

  2. 【LOJ】 #2015. 「SCOI2016」妖怪

    题解 这道题教会我很多东西,虽然它是个傻逼三分 1.long double的运算常数是巨大的 2.三分之前的界要算对!一定要算准,不要想一个直接写上! 3.三分100次也就只能把精度往里推20多位,可 ...

  3. 「SCOI2016」妖怪 解题报告

    「SCOI2016」妖怪 玄妙...盲猜一个结论,然后过了,事后一证,然后假了,数据真水 首先要最小化 \[ \max_{i=1}^n (1+k)x_i+(1+\frac{1}{k})y_i \] \ ...

  4. loj#2013. 「SCOI2016」幸运数字 点分治/线性基

    题目链接 loj#2013. 「SCOI2016」幸运数字 题解 和树上路径有管...点分治吧 把询问挂到点上 求出重心后,求出重心到每个点路径上的数的线性基 对于重心为lca的合并寻味,否则标记下传 ...

  5. loj#2016. 「SCOI2016」美味

    题目链接 loj#2016. 「SCOI2016」美味 题解 对于不带x的怎么做....可持久化trie树 对于带x,和trie树一样贪心 对于答案的二进制位,从高往低位贪心, 二进制可以表示所有的数 ...

  6. loj#2012. 「SCOI2016」背单词

    题目链接 loj#2012. 「SCOI2016」背单词 题解 题面描述有点不清楚. 考虑贪心 type1的花费一定不会是优的,不考虑, 所以先把后缀填进去,对于反串建trie树, 先填父亲再填儿子, ...

  7. loj #2013. 「SCOI2016」幸运数字

    #2013. 「SCOI2016」幸运数字 题目描述 A 国共有 n nn 座城市,这些城市由 n−1 n - 1n−1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以 ...

  8. LOJ #2013「SCOI2016」幸运数字

    时限为什么这么大啊 明摆着放多$ log$的做法过啊$QAQ$ LOJ #2013 题意 有$ Q$次询问,每次询问树上一条链,点有点权,你需要选择一些链上的点使得异或和尽量大 点数$ \leq 2* ...

  9. LOJ#2014「SCOI2016」萌萌哒(倍增,并查集优化连边)

    题面 点此看题 题意很明白,就不转述了吧. 题解 题目相当于告诉了我们若干等量关系,每个限制 l 1 , r 1 , l 2 , r 2 \tt l_1,r_1,l_2,r_2 l1​,r1​,l2​ ...

随机推荐

  1. Linux定时任务调度

    ⒈概述 任务调度:是指系统在某个时间执行的特定的命令或程序 分类:1)系统任务:有些重要的工作必须周而复始的执行,例如病毒扫描等 2)用户任务:个别用户可能希望定时执行某些程序,例如mysql定时备份 ...

  2. C++学习2--坦克大战编写-前置知识

    基础班学习的这一个多月里的前三周讲解基础的语法,最后一周需要做坦克大战的项目巩固提高自己掌握的语法知识.这个系列博文主要是为了把学习过程中的知识点总结并记录下来: 开发语言与开发工具:C++,VS20 ...

  3. ubuntu 下 teamview 取消自动启动 autostart

    sudo teamviewer daemon disable

  4. mysql系列一、mysql数据库规范

    一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 表必须使用InnoDB存储引擎. 表必须 ...

  5. Oracle11g的database 和client的区别是什么?

    由于工作需要,刚开始接触oracle数据库,完全小白,下载的时候看到有database和client两种类型可供下载,一时不知如何是好,于是网上询问得知其中区别,在此记录一下自己的无知. “datab ...

  6. redis安全 (error) NOAUTH Authentication required

    Redis 安全 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全. 实例 我们可以通过以下命令查看是否设置了 ...

  7. 注解图Annotation

    该图来源于 竹子-博客(.NET/Java/Linux/架构/管理/敏捷) http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html,感 ...

  8. springboot:session集中存储到redis

    1.在web工程的基础上,在pom.xml中添加: <dependency> <groupId>org.springframework.boot</groupId> ...

  9. 欧拉函数,打表求欧拉函数poj3090

    欧拉函数 φ(n) 定义:[1,N]中与N互质的数的个数 //互质与欧拉函数 /* 求欧拉函数 按欧拉函数计算公式,只要分解质因数即可 */ int phi(int n){ int ans=n; ;i ...

  10. 字符串反转,例如"abc"反转"cba"

    package stringyiwen; /* * 字符串反转,例如"abc"反转"cba" */public class StringTestChar { p ...