PAT 1059 吃老鼠晋级赛

2023-11-06 05:50
文章标签 pat 晋级 老鼠 1059

本文主要是介绍PAT 1059 吃老鼠晋级赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


题意:

有n个程序,要比赛吃老鼠,但是要分组比。每次小组胜利的晋级下一次比赛,直到分出第一名为止。

主要是理解输入

第一行是比赛程序的数量,和 每个小组的成员数。

第二行是每个程序能够吃的老鼠数量。

第三行是将这些程序排了个队,从左到右依次站好,按照顺序一个个分组,比赛。

例如例子里的第三行为6 0 8 7 10 5 8 1 4 2 3

则分为了

(6 0 8) (7 10 5) (8 1 4) (2 3) 这四组。

比赛后剩下 8 5 9 3

则分为 (8 5 9) 和(3)这两组。

以此类推,直到8号程序获得冠军。

最后输出从0号到m号的排名。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<stack>
#include<vector>
#include<queue>
#include<string>
#include<map>
using namespace std;
#define INF 99999999
#define M 2000//start  21:22
//end    21:56
int main(){int n,m;int w[M];int i;scanf("%d%d",&n,&m);for(i=0;i<n;i++)scanf("%d",&w[i]);vector<int> q;int qorder;for(i=0;i<n;i++){scanf("%d",&qorder);q.push_back(qorder);}vector<int> wq;//储存胜者的数组int qn;int rank[M];int maxi,maxw,rankn,j;while(q.size() > 1 ) //比赛者只剩下1个时,比赛结束{//确定这次比赛败者的名次//即败者名次 = 胜出者数量 + 1	qn = q.size();if(qn%m!=0) //若不整除,为胜者数量为qn/m+1 ,排名再要+1rankn = qn/m + 1 + 1;else rankn = qn/m + 1;maxw = -1;for(j = 0; j < q.size(); j++){i = q[j]; //这才是比赛者的序号rank[i] = rankn;//都先预设为败者if(w[i] > maxw ){maxw = w[i];maxi = i;}if((j+1) % m == 0 || j==q.size()-1){wq.push_back(maxi); //胜者晋级//继续进行下一组maxw = -1;}}q = wq;wq.clear(); }rank[maxi] = 1;for(i=0;i<n;i++){printf("%d",rank[i]);if(i!=n-1)cout<<" ";else cout<<endl;}
}






这篇关于PAT 1059 吃老鼠晋级赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354807

相关文章

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)

本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章)。每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深入的了解。 适合的读者:有经验的开发员,专业前端人员。 原作者: Dmitry A. Soshnikov发布时间: 2010-09-02原文:http://dmitrysoshnikov

基于yolov5的明厨亮灶阳光厨房老鼠检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的明厨亮灶阳光厨房老鼠检测系统是一种高效、智能的食品安全监测解决方案。该系统利用YOLOv5网络模型,结合深度学习技术,实现对厨房环境的实时监控与智能分析。 YOLOv5以其高速和高精度的特性,在实时目标检测任务中表现出色。该系统通过安装在前端的智能摄像头,实时采集厨房画面,并利用YOLOv5算法对视频流中的图像进行快速处理。一旦检测到老鼠生物,系统会立即检测到相

PAT (Advanced Level) Practice

1001:  题目大意: 计算 a+b 的结果,并以标准格式输出——即每三个数字一组,组之间用逗号分隔(如果数字少于四位,则不需要逗号分隔)  解析: 我们知道相加右正有负,对于样例来说 Sample Input: -1000000 9 Sample Output: -999,991 如果是从左往右,算上负号的话输出应该是-99,999,1 从右往左:-,999,991离正确

掌握EF Core:全方位面试指南,助你从初级到高级轻松晋级

一、前言 这份指南旨在帮助你为主要考察 Entity Framework Core (EF Core) 的面试做好准备,内容涵盖基础、中级和高级三个不同经验级别。每个级别包括10个高频面试题,附有解题思路和详细的解答示例。 二、基础级别 重点在于 EF Core 的基本概念和使用,如 DbContext 的基本配置、简单的查询和插入操作、关系映射以及基本的迁移和模型验证。旨在评估对 EF

晋级率计算

问题描述 小达正在参加一个比赛,已知参赛人数和晋级人数,小达希望你帮忙写个程序计算一下晋级率。 输入格式 输入仅一行,有两个整数,第一个为参赛人数,第二个为晋级人数,都在 11 ~ 20000 的范围内。 输出格式 输出仅一行,比赛晋级率,以百分数形式输出,精确到小数点后 3 位。 样例 输入数据 1 10000 4567   输出数据 1 45.670% 代码 #i

1050 String Subtraction——PAT甲级

Given two strings S1​ and S2​, S=S1​−S2​ is defined to be the remaining string after taking all the characters in S2​ from S1​. Your task is simply to calculate S1​−S2​ for any given strings. However,

1105 链表合并——PAT乙级

给定两个单链表 L1​=a1​→a2​→⋯→an−1​→an​ 和 L2​=b1​→b2​→⋯→bm−1​→bm​。如果 n≥2m,你的任务是将比较短的那个链表逆序,然后将之并入比较长的那个链表,得到一个形如 a1​→a2​→bm​→a3​→a4​→bm−1​⋯ 的结果。例如给定两个链表分别为 6→7 和 1→2→3→4→5,你应该输出 1→2→7→3→4→6→5。 输入格式: 输入首先在第一

1110 区块反转——PAT乙级

给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转。例如:给定 L 为 1→2→3→4→5→6→7→8,K 为 3,则输出应该为 7→8→4→5→6→1→2→3。 输入格式: 每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数 N (≤105)、以及正整数 K (