zoukankan      html  css  js  c++  java
  • [SCOI2016]妖怪 牛客网的ACM省选题,个人看法,欢迎交流

    链接: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+y0
        if F>maxv:
            maxv = F
            maxxy = [x0,y0]
    x = maxxy[0]**0.5
    y = maxxy[1]**0.5
    maxv = (x+y)**2
    print('%.4f'%(maxv))  

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

     

     

     

  • 相关阅读:
    [读书笔记]Applying UML and patterns:The agile manifesto and principles
    关于CheckBoxList和RadioButtonList的几个问题
    教你背单词
    深入剖析引用参数Ref和Out
    Web的系统测试方法 (转载)
    .net Compact Framework 程序设计起步(智能设备的程序设计)
    知道Ping的最后一个返回值TTL是什么意思吗?
    精明人的四个等级[转]
    HTTP协议下用Web Service上传大文件的解决方案
    如何解决DataGrid中删除记录后分页错误
  • 原文地址:https://www.cnblogs.com/zhuangzi101/p/11466471.html
Copyright © 2011-2022 走看看