首页 > 其他分享 >P3887 [GDOI2014]世界杯

P3887 [GDOI2014]世界杯

时间:2023-04-19 21:24:55浏览次数:42  
标签:球员 后卫 世界杯 int 守门员 cin P3887 阵型 GDOI2014

# [GDOI2014]世界杯

## 题目描述

3014 年世界杯足球赛就要开始了!作为卫冕冠军中国足球队的教练,手下每位球员都是猛将,如何摆出最强的 11 人阵容也是一件幸福的烦恼事啊。

众所周知,足球阵容里的11个球员都会被分配到场上某一个特别的位置,而这些位置主要分为守门员、后卫、中场和前锋四种,其中守门员有且只有一个,后卫、中场和前锋的人数取决于你安排的足球阵型。形容足球阵型的方法由后卫开始计算至前锋,但不把守门员计算在内。例如,3-5-2 阵型是指有三个后卫、五个中场及两名前锋。由于竞争激烈,每位球员只会培养其中一种位置所需要的技能,所以他们每个人都只能胜任四个位置中的其中一种。

作为一个对球员能力了如指掌的教练,你给每个球员的综合水平进行量化。为了将阵型安排得更好,你的教练团队决定使用以下策略安排球员:首先按照顺序提出 Q个阵型,分别代表第一阵型、第二阵型、……、第 Q阵型。然后对于每个阵型,从仍未选择的球员中选择最好的对应数量的守门员、后卫、中场和前锋。比如说,对于第一阵型,在所有球员中选择;对于第二阵型,在除了第一阵型外的所有球员中选择;对于第三阵型,在除了第一阵型和第二阵型外的所有球员中选择;以此类推。

现在 Q个阵型都已经确定,而你需要知道的,是每个阵型的平均综合水平分别是多少。

## 输入格式

第一行有四个整数 K, D, M, F,分别表示守门员、后卫、中场和前锋供挑选的球员人数。

第二行有 K个整数 k_i,分别表示每个守门员的综合水平值。

第三行有 D个整数 d_i,分别表示每个后卫的综合水平值。

第四行有 M 个整数 m_i,分别表示每个中场的综合水平值。

第五行有 F个整数 f_i,分别表示每个前锋的综合水平值。

第六行有一个整数 Q,表示教练团队提出的阵型个数。

以下Q行,第 i 行三个整数A_i, B_i, C_i$,由空格间隔,表示第 i 阵型是 A_i - B_i - C_i 阵型。

## 输出格式

输出 Q行。对于第 i 种阵型,输出一个实数,表示该阵型平均综合水平的最大值,并四舍五入到小数点后2 位。

## 样例 #1

### 样例输入 #1

```
3 10 12 4
76 60 87
78 84 84 84 81 82 72 51 77 57
85 84 62 87 88 64 81 90 80 66 88 85
65 83 63 79
2
4 5 1
4 4 2
```

### 样例输出 #1

```
85.64
78.00
```

代码及思路展示

#include<iostream>
#include<queue>//queue的头文件
#include<algorithm>//sort需要用到的头文件
using namespace std;
int main()
{
long long K,D,M,F;
cin>>K>>D>>M>>F;//分别表示守门员、后卫、中场和前锋供挑选的球员人数
long long n[100005]={0};//n数组用来暂存数据,即分数
queue<long long>k,d,m,f;//构造4个队列,存储如上数据的分数
for(int i=1;i<=K;i++)
{//输入每个守门员的分数
cin>>n[i];
}
sort(n+1,n+1+K);
//首先进行排序,从小到大
for(int i=K;i>=1;i--)
{
k.push(n[i]);//但是此处是从最大到最小的顺序入栈,方便后面的操作
}
for(int i=1;i<=D;i++)
{//同上操作,后卫分数
cin>>n[i];
}
sort(n+1,n+1+D);
for(int i=D;i>=1;i--)
{
d.push(n[i]);
}
for(int i=1;i<=M;i++)
{//同上操作,中锋分数
cin>>n[i];
}
sort(n+1,n+1+M);
for(int i=M;i>=1;i--)
{
m.push(n[i]);
}
for(int i=1;i<=F;i++)
{//同上操作,前锋分数
cin>>n[i];
}
sort(n+1,n+1+F);
for(int i=F;i>=1;i--)
{
f.push(n[i]);
}
int Q;
cin>>Q;//输入想要几支队伍
int a,b,c;//队伍的类型
double ans;//该队伍的总分
for(int i=1;i<=Q;i++)
{
ans=0;
cin>>a>>b>>c;
//由于之前入栈的每个种类队员的分数都按照从大到小的顺序排好了
//此处的操作是,比如需要a个后卫,则从栈中取出前a个,然后出栈
//保证下一次操作时,是前几次选拔完后的队员中,剩余的最好的队员被优先选中
for(int j=1;j<=a;j++)ans+=d.front(),d.pop();
for(int j=1;j<=b;j++)ans+=m.front(),m.pop();
for(int j=1;j<=c;j++)ans+=f.front(),f.pop();
ans+=k.front();//别忘了加上守门员
k.pop();
printf("%.2f\n",double(ans/11));//最后按照要求输出
}
return 0;
}

标签:球员,后卫,世界杯,int,守门员,cin,P3887,阵型,GDOI2014
From: https://www.cnblogs.com/rdWang/p/17334672.html

相关文章

  • 世界杯神之队
    众所周知,每个国家的球队都有自己的长处,在不同规则下最强球队也有所不同。而小M制定的规则是输球场数最少,这是有道理的,因为输球场数可以评判一个球队的稳定性。输球场数越少,就说明稳定性越强,实力越高。中国队为什么是神?首先是犯下傲慢之罪的美国队,多次杀入淘汰赛,就露出不屑的笑......
  • 红妹侃球丨大喜事!中国将举行三次国际中体联队的世界杯赛
    大喜事!中国将举行三次国际中体联队的世界杯赛。众所周知,国际中体联的足球世界杯是由国际中体联举办的全球最高水平的中学生足球赛事,目的是为了推动各个国家中学生在体育......
  • 2014-6-25日世界杯汇总
    组国家6-25NEXT出线表被淘汰A巴西7荷兰喀麦隆墨西哥7智利澳大利亚克罗地亚3哥斯达黎加西班牙喀麦隆0阿根廷英格兰B荷兰9比利时洪都拉斯智利6巴西波黑澳大利亚0墨西哥克罗地......
  • 2014-6-24日世界杯汇总
     组国家6-24NEXT出线表被淘汰A巴西7荷兰喀麦隆墨西哥7智利澳大利亚克罗地亚3哥斯达黎加西班牙喀麦隆0阿根廷英格兰B荷兰9比利时洪都拉斯智利6巴西波黑澳大利亚0墨西哥克罗......
  • 2014-6月23日世界杯汇总
    组国家最新日期-6-23NEXT出线表被淘汰A巴西4VS喀麦隆荷兰喀麦隆墨西哥4VS克罗地亚智利澳大利亚克罗地亚3VS墨西哥哥斯达黎加西班牙喀麦隆0VS巴西阿根廷英格兰B荷兰6VS智利比......
  • 2022世界杯上的半自动化越位技术浅析
        2022年的世界杯用了很多的新技术,比如半自动化越位技术、比赛用球AIRihla、球场智能空调、FeelixPalm辅助技术、可持续利用的体育场。    这场比赛中给......
  • 【世界杯黑技术专题】「原理探索专题」一文解读一下“卡塔尔世界杯”的先进技术之半自
    盘点卡塔尔世界杯的先进黑科技归纳总结一下目前世界杯的先进的黑科技有哪些?大致可以划分为以下几点。半自动化越位技术比赛用球AlRihla球场智能空调可持续利用的体育场便......
  • 【世界杯黑技术专题】「原理探索专题」一文解读一下“卡塔尔世界杯”的先进技术之半自
    盘点卡塔尔世界杯的先进黑科技归纳总结一下目前世界杯的先进的黑科技有哪些?大致可以划分为以下几点。半自动化越位技术比赛用球AlRihla球场智能空调可持续利用的体......
  • 当项目经理看世界杯决赛时…
    12月18日,2022卡塔尔世界杯决赛,阿根廷在点球大战中击败卫冕冠军的法国队,捧走大力神杯。这场跌宕起伏的“巅峰对决”,给大家呈现了一场精彩绝伦的比赛。 当阿根廷2-0领先七......
  • 世界杯竞猜项目Dapp-第六章(合约升级)
    目前主流有三种合约升级方法transparent方式;(通用,业务逻辑和代理逻辑解耦合,比较贵)uups方式;(代理逻辑集成到了业务逻辑,通过继承来实现,便宜)beacon方式;(更加高级,一个信号......