zoukankan      html  css  js  c++  java
  • 【t062】最厉害的机器人

    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

    【背景】 Wind设计了很多机器人。但是它们都认为自己是最强的,于是,一场比赛开始了~
    【问题描述】
    机器人们都想知道谁是最厉害的,于是它们进行如下一种比赛。每个机器人需要在最短的时间内找到自己面前的一个球,走到它
    面前并绕过它,将球推进身后的球门。
    首先Wind给了每个机器人一些钱,让他们去补充自己的装备,Wind给的钱恰好够补充k个装备。有如下几个装备可供补充:亮度传感
    器,超声波测距,触动传感器,马达。(每种装备最多有10个)
    而机器人找到球的时间=(20-亮度传感器*2)*x1,球离机器人的距离为(100-超声波测距*7)*x2,绕过球的距离为(100-触动传感器
    *9)*x3,机器人的速度为(10+马达*1)*x4。换句话说,总共的时间为,找球的时间+走到球的时间+绕过球的时间+走回原地的时
    间。机器人们要如何配置自己的装备才能达到最短的时间呢?
    【时间限制】
    每个测试点1s
    【注释hint】
    因为有了超声波,所以距离更加精确。
    因为有了触动传感器,可以更精确的感觉到球。(有点牵强- -将就看吧。)
    【输入格式】

    每组测试数据只有1行5个数k,x1,x2,x3,x4 (0<=k<=40,1<=x1,x2,x3,x4<=10,且均为整数)。

    【输出格式】

    对每组数据输出1行为最短的时间,保留3位小数。

    Sample Input

    5 1 1 1 1

    Sample Output

    39.000

    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t062

    【题解】

    枚举大法好。
    直接四重循环每种装备有多少个就好;
    那4种装备,每种增加都会减少时间.所以肯定是恰好为四种装备数总和为k的时候时间花得最少;
    按照所给的公式计算时间.取最小值就好.

    【完整代码】

    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    #define rep1(i,x,y) for (int i = x;i <= y;i++)
    
    int k;
    double x1,x2,x3,x4;
    double ans = -1;
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        scanf("%d%lf%lf%lf%lf",&k,&x1,&x2,&x3,&x4);
        rep1(n1,0,10)
            rep1(n2,0,10)
                rep1(n3,0,10)
                    rep1(n4,0,10)
                        {
                            if (n1+n2+n3+n4==k)
                            {
                                double temp = (20-2*n1)*x1*1.0;
                                temp+=((2*(100-n2*7)*x2+(100-n3*9)*x3)*1.0)/(1.0*((10+n4)*x4));
                                if (ans<0)
                                    ans = temp;
                                else
                                    ans = min(ans,temp);
                            }
                            else
                                if (n1+n2+n3+n4>k)
                                    break;
                        }
        printf("%.3lf
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    一次安装。net core的经历
    c# task 等待所有子线程执行完的写法
    .net 中的async,await理解
    dbeaver pgsql连接工具
    oracle 导出表结构和备注
    abp
    发布站点
    excel 拆分多个excel并保持
    重定向和反向代理的区别
    es6中的解构赋值
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626698.html
Copyright © 2011-2022 走看看