zoukankan      html  css  js  c++  java
  • 模拟题 (+queue队列知识)

    链接:https://www.nowcoder.com/acm/contest/67/A
    来源:牛客网

    题目描述

        在绝地求生(吃鸡)游戏里,不同的枪支有不同的威力,更是可以搭配不同的配件,以提升枪支的性能。

        每一把枪都有其威力及其可装备配件种类。每一个配件有其所属种类,可以为枪支提供威力的百分比加成。每一把枪只能装备一个同类配件。给你n把枪支和m个配件,枪的威力为p,可装备的配件数量为k,为k个不同类型的配件,同种类配件只可以装备一个。配件种类用数字q表示,配件威力加成用一个小数b表示。请你挑选一把枪并为其搭配配件使其威力最大。

        假设一把枪的威力是p,装配的k个配件的威力加成是bi,那么枪最后的威力w=p*(1+b1+b2+…+bk)。



    输入描述:

    数据有多组,处理到文件结束。
    第一行两个整数n和m,代表枪支数量和配件数量。
    接下来n行,描述n把枪的属性:第一个整数为p,代表枪支的威力;第二个整数为k,代表该枪支可装备的配件数量;后面k个整数,代表可装备配件的种类。
    接下来m行,描述m个配件的属性:第一个整数为q,代表配件的种类,第二个浮点数为b,代表配件可以为枪支提供的威力加成。

    输出描述:

    每组数据输出为一行,输出一个浮点数,代表合理装备配件后的枪支最大威力。精确到小数点后4位。
    示例1

    输入

    3 6
    120 3 1 2 3
    100 4 1 2 3 4
    110 3 2 3 4
    1 0.12
    2 0.23
    2 0.26
    4 0.57
    3 0.35
    5 0.41

    输出

    239.8000

    说明

    对于上面的样例,正确答案应该是,使用第三把枪,配上第三、四、五个配件。
    枪的最终威力就是110*(1+0.26+0.57+0.35)=239.8000

    备注:

    对于100%的数据,
    1 <= n,m,k,q <= 1000;
    0 <= p <= 1000;
    0 <= b <= 1。

    queue的知识
    #include <iostream>
    #include <queue>
    int main()
    {
    queue<int> q; //使用前需定义一个queue变量,且定义时已经初始化
    while(!q.empty()) ; //重复使用时,用这个初始化
    q.push(1); //进队列
    q.pop(); //出队列
    int v=q.front(); //得到队首的值
    int s=q.size(); //得到队列里元素个数
    return 0;
    }

    代码:
     1 #include<bits/stdc++.h>
     2 using namespace std; 
     3 #define sscc ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
     4 queue<int> c[1050];
     5 int main()
     6 {
     7     int n,m;
     8     while(cin>>n>>m)
     9     {
    10         int b,k;
    11         double ans=0.0,t,rate,a[1050]={0},p[1050]={0};//a储存初始威力,p储存的最大配件威力
    12         for(int i=1;i<=n;i++)
    13         {
    14             cin>>a[i]>>b;
    15             while(b--)
    16                 cin>>k,c[i].push(k);
    17         }
    18         for(int i=1;i<=m;i++)
    19         {
    20             cin>>k>>rate;
    21             p[k]=max(p[k],rate);
    22         }
    23         for(int i=1;i<=n;i++)
    24         {
    25             t=1.0;
    26             while(!c[i].empty())
    27             {
    28                 t+=p[c[i].front()];
    29                 c[i].pop();
    30             }
    31             ans=max(ans,t*a[i]);
    32         }
    33         printf("%.4lf
    ",ans);
    34     }
    35     return 0;
    36 }
  • 相关阅读:
    中芯国际唐镇生活园区二期奠基 助力员工安居乐业
    权限管理架构
    不登录电脑启动程序
    Nagios 系统监控
    JieBaNet+Lucene.Net
    FontAwesome 图标
    Net多线程编程
    Scala Control Structures
    OAuthLogin2.0
    Telnet服务器和客户端请求处理
  • 原文地址:https://www.cnblogs.com/xiongtao/p/8334624.html
Copyright © 2011-2022 走看看