STL_A1056 Mice and Rice (25 分)
Posted 2o2o
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL_A1056 Mice and Rice (25 分)相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805342720868352/problems/994805419468242944
/* *queue的使用,先进先出 *变量定义要有意义 *制定晋级规则以及排名 */ #include<iostream> using namespace std; #include<cstdio> #include<queue> const int MAXN=1010; struct mouse int weight; int ranks; mouse[MAXN]; int main() int number,grouper,order; scanf("%d%d",&number,&grouper); for(int i=0;i<number;i++) scanf("%d",&mouse[i].weight); queue<int> queues; for(int i=0;i<number;i++) scanf("%d",&order); queues.push(order); int temp=number,group; while(queues.size() != 1) if(temp%grouper==0) group=temp/grouper; else group=temp/grouper+1; for(int i=0;i<group;i++) int maxmouse=queues.front(); for(int j=0;j<grouper;j++) //最后一组老鼠不足grouper时退出循环 if(i*grouper+j>=temp) break; int fronts=queues.front(); if(mouse[fronts].weight > mouse[maxmouse].weight) maxmouse=fronts; mouse[fronts].ranks=group+1; //该轮老鼠排名为group+1 queues.pop(); queues.push(maxmouse); //把胜利的老鼠晋级 temp=group; //group只老鼠进入下一轮 //当队列里只剩1只老鼠时,令其排名为1 mouse[queues.front()].ranks=1; for(int i=0;i<number;i++) printf("%d",mouse[i].ranks); if(i<number-1) printf(" "); return 0;
以上是关于STL_A1056 Mice and Rice (25 分)的主要内容,如果未能解决你的问题,请参考以下文章
PAT (Advanced Level) 1056. Mice and Rice (25)
1056 Mice and Rice (25 分)难度: 一般 / 知识点: 模拟