zoukankan      html  css  js  c++  java
  • POJ 2051 Argus

    /* 题目要求按注册者报告返回的时间顺序输出注册者的
    * 编号,如果同一时间按出现,则先输出序号小的
    * 大体思路:这个方法有点慢,先对注册者排序,然后每次输出
    * 最先返回的,用find_min来找到最先返回的,复杂度有点高。
    */

    #include<iostream>
    #include
    <algorithm>
    using namespace std;
    struct Node{
        
    int val;
        
    int reg;
        
    int sum;
    }node[
    10000];
    int n,k;
    int find_min()
    {
        
    int min = node[0].sum;
        
    int pos = 0;
        
    for(int i=1;i<n;++i)
            
    if(min>node[i].sum)
            {
                min 
    = node[i].sum;
                pos 
    = i;
            }
        
    return pos;
    }
    int cmp(const Node& a,const Node& b)
    {
        
    return a.reg<b.reg;
        }

    int main()
    {
        
    char str[15];
        
    int rgt,value,index,i,j;
        n 
    = 0;
        
    while(1)
        {
            scanf(
    "%s",str);
            
    if(!strcmp(str,"#"))
                
    break;
            scanf(
    "%d%d",&node[n].reg,&node[n].val);    
            node[n].sum 
    = node[n].val;
            
    ++n;
        }
        sort(node,node
    +n,cmp);
        scanf(
    "%d",&k);
        
    for(i=0;i<k;++i)
        {
            index 
    = find_min();
            node[index].sum 
    +=node[index].val;
            printf(
    "%d\n",node[index].reg);
        }
        
    return 0;
    }

  • 相关阅读:
    Python实例1-Collatz 序列
    Git 教程
    python 算法基础
    认识 flask框架 及 介绍
    python 虚拟环境
    Numpy基本操作学习
    Jupyter Notebook 快捷键指南
    Gallery——Matplotlib
    list.pop()函数操作头部与尾部的计时试验
    list 与 dict 的in操作比较试验
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662788.html
Copyright © 2011-2022 走看看