链接:https://ac.nowcoder.com/acm/contest/390/1001
来源:牛客网

题目描述

邱老师是妖怪爱好者,他有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性。邱老师立志成为妖怪大师,于是他从真新镇出发,踏上未知的旅途,见识不同的风景。环境对妖怪的战斗力有很大影响,在某种环境中,妖怪可以降低自己k×a点攻击力,提升k×b点防御力或者,提升自己k×a点攻击力,降低k×b点防御力,a,b属于正实数 ,k为任意实数,但是atk和dnf必须始终非负。妖怪在环境(a,b)中的战斗力为妖怪在该种环境中能达到的最大攻击力和最大防御力之和。strength(a,b)=max(atk(a,b))+max(dnf(a,b))环境由a,b两个参数定义,a,b的含义见前 文描述。比如当前环境a=3,b=2,那么攻击力为6,防御力为2的妖怪,能达到的最大攻击力为9,最大防御力为6。 所以该妖怪在a=3,b=2的环境下战斗力为15。因此,在不同的环境,战斗力最强的妖怪可能发生变化。作为一名优秀的妖怪训练师,邱老师想发掘每一只妖怪的最大潜力,他想知道在最为不利的情况下,他的n只妖怪能够达到的 最强战斗力值,即存在一组正实数(a,b)使得n只妖怪在该环境下最强战斗力最低。

输入描述:

第一行一个n,表示有n只妖怪。接下来n行,每行两个整数atk和dnf,表示妖怪的攻击力和防御力。1 ≤ n ≤ 10^6, 0<atk,dnf ≤ 10^8

输出描述:

输出在最不利情况下最强妖怪的战斗力值,保留4位小数。
示例1

输入

3
1 1
1 2
2 2

输出

8.0000

解题思路

首先,对于一只妖怪,在(a,b)环境下,它可能会增强ka的攻击力,同时相应的会降低kb的防御力,但是它的防御力为非负,所以它的攻击力最大的时候,也就是它的防御力为零的时候。同理,它的防御力最大的时候,它的攻击力为零。由此,我们可以得到在(a,b)环境下,妖怪攻击力最大时的k值k1,和防御力最大时的k值k2。

设妖怪的初始攻击力为x0,初始防御力为y0。它在(a,b)环境下的最大攻击力为x0+k1*a,最大防御力为y0+k2*b,其中k1、k2满足y0-k1*b=0x0-k2*a=0。

那么该妖怪在环境(a,b)中的战斗力为

变换可得到

即当,F具有最小值,此时的 环境(a,b)为该妖怪最不利的环境。

Python代码

import sys
maxv = 0.0
maxxy = [1,2]
ad = []
lines = sys.stdin.readlines()
for i in lines[1:]:i = i.split()x0 = int(i[0])y0 = int(i[1])F = x0+y0if F>maxv:maxv = Fmaxxy = [x0,y0]
x = maxxy[0]**0.5
y = maxxy[1]**0.5
maxv = (x+y)**2
print('%.4f'%(maxv))  

仅为个人看法,不对的地方,请指正。主流的解法是使用凸包什么的,对这方面知识不是很足,我也不知道我这做法对不对,欢迎交流!

转载于:https://www.cnblogs.com/zhuangzi101/p/11466471.html

[SCOI2016]妖怪 牛客网的ACM省选题,个人看法,欢迎交流相关推荐

  1. 牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph

    牛客网暑期ACM多校训练营(第十场)F.Rikka with Line Graph 做法:\(G'\) 中的对应原图两条边(a,b) (c,d)的最短路为: \[ w[a][b] + w[c][d] ...

  2. 牛客网暑期ACM多校训练营(第九场)

    牛客网暑期ACM多校训练营(第九场) A. Circulant Matrix 做法:看到下标 \(xor\) 这种情况就想 \(FWT\),可是半天没思路,于是放弃了..其实这个 \(n\) 疯狂暗示 ...

  3. 牛客网暑期ACM多校训练营(第五场)

    牛客网暑期ACM多校训练营(第五场) A. gpa 二分答案,然后就转化为是否满足 \(\frac {\sum s[i]c[i]}{\sum s[i]} ≥ D\), \(\sum s[i]c[i] ...

  4. 牛客网暑期ACM多校训练营(第三场)

    牛客网暑期ACM多校训练营(第三场) A. PACM Team 01背包,输出方案,用bool存每种状态下用的哪一个物品,卡内存.官方题解上,说用char或者short就行了.还有一种做法是把用的物品 ...

  5. 牛客网暑期ACM多校训练营(第一场)

    牛客网暑期ACM多校训练营(第一场) A. Monotonic Matrix 考虑0和1的分界线,1和2的分界线,发现问题可以转化为两条不互相穿过的路径的方案数(可重叠),题解的做法就是把一条路径斜着 ...

  6. 牛客网暑期ACM多校训练营(第十场)D Rikka with Prefix Sum

    链接:https://www.nowcoder.com/acm/contest/148/D 来源:牛客网 题目描述 Prefix Sum is a useful trick in data struc ...

  7. 牛客网暑期ACM多校训练营(第三场)A.PACM Team(多重01背包)

    链接:https://www.nowcoder.com/acm/contest/141/A 来源:牛客网 题目描述 Eddy was a contestant participating in ACM ...

  8. 2018牛客网暑期ACM多校训练营(第十场)A Rikka with Lowbit (树状数组)

    链接:https://ac.nowcoder.com/acm/contest/148/A 来源:牛客网 Rikka with Lowbit 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C ...

  9. 2018牛客网暑期ACM多校训练营(第十场)J Rikka with Nickname(二分,字符串)

    链接:https://ac.nowcoder.com/acm/contest/148/J?&headNav=acm 来源:牛客网 Rikka with Nickname 时间限制:C/C++ ...

最新文章

  1. linux 测试vim编译器_推荐几个好用的在线编译器
  2. 10 种机器学习算法的要点(附 Python 和 R 代码)(转载)
  3. Vim和Vi的常用命令
  4. Linux中查看负载
  5. CUDA学习(九十八)
  6. 【李宏毅机器学习】Brief Introduction of Deep Learning 深度学习简介(p12) 学习笔记
  7. adapter中的数据错误原因和解决方案
  8. 《GAMES104-现代游戏引擎:从入门到实践》-05 学习笔记
  9. oem和odm是什么意思?oem与odm区别是什么?
  10. 1-4 CAD 圆弧(arc)
  11. 爬取贴吧上的图片到本地
  12. scrum立会报告+燃尽图(第二周第六次)
  13. Elasticsearch 查询时 判断不为null或不为空字符串
  14. windows+php+ffmpeg转换音频格式
  15. varchar与char有什么区别
  16. 计算机操作系统——分时系统和实时系统
  17. 网站建设项目合同撰写
  18. 全屋网络覆盖方案笔记
  19. 【4天快速入门Python数据挖掘之第1天】Matplotlib的使用
  20. html 手机 touch,手机的html上,touchstart、touchmove、touchend同时存在时,touchmove和touchend失效...

热门文章

  1. 频域特征指标及其MATLAB代码实现(重心频率、均方频率、均方根频率、频率方差、频率标准差)
  2. 论坛转帖专用工具源代码
  3. 【夜读】优秀的人,都置顶了这3种能力
  4. 网易神贴,一根排骨引发的案件 转载
  5. 管理经济学【九】之 垄断市场中的企业决策
  6. 离线搭建监控工具Ganglia
  7. Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
  8. QT实现完美无边框窗口(可拖动,可调整大小)
  9. 梦幻模拟战手游服务器维护,梦幻模拟战手游9月15日维护公告 修复了你所关注的问题...
  10. 基于保角形变换的电磁波导波结构设计