Codeforces Round #257 (Div. 2) A. Jzzhu and Children解题报告

来源:互联网 发布:搭建php开发环境 编辑:程序博客网 时间:2024/06/05 18:00

对于这题笔者认为这符合队列的先进先出原则,所以可以通过队列数据结构来实现这个问题,

至于序号的话就可以通过建立结构体来达到要求;

而对于数据结构队列笔者在这稍微提示一下

像栈一样,队列(queue)也是一种线性表,它的特性是先进先出,插入在一端,删除在另一端。就像排队一样,刚来的人入队(push)要排在队尾(rear),每次出队(pop)的都是队首(front)的人。如图1,描述了一个队列模型。

下面就贴出笔者的代码:

#include<cstdio>#include<queue>#define N 100+10#include<algorithm>using namespace std;struct child{       int need;       int number;};int main(void){    struct child Child[N],p,temp;    queue<child> q;    int n,m;         scanf("%d%d",&n,&m);    for(int i=1;i<=n;++i)        Child[i].number = i;    for(int i=1;i<=n;++i){        scanf("%d",&Child[i].need);        q.push(Child[i]);    }    if(q.size()==1) { printf("1\n"); return 0;}    while(q.size()!=1)    {        p = q.front();        if(p.need > m)        {           p.need -= m;           temp.need = p.need;           temp.number = p.number;           q.pop();           q.push(temp);        }        else           q.pop();    }    p = q.front();    printf("%d\n",p.number);    return 0;}

更多关于队列的知识可以点击下面链接:

点击打开链接



0 0
原创粉丝点击