zoukankan      html  css  js  c++  java
  • codeforces 659B Qualifying Contest

    题目链接:http://codeforces.com/problemset/problem/659/B

    题意:

    n个人,m个区。给出n个人的姓名(保证不相同),属于的区域,所得分数。从每个区域中选出成绩最好的两个人去参加比赛,输出这两个人的名字。如果第三个人的成绩和第二个人的成绩相同,则输出“?”,保证结果不确定。

    解题思路:

    刚开始想用个什么STL容器把这三个属性存进去,然后根据区域的不同对每个区域的选手的分数进行排序,最后看选手确定,输出答案。

    可是做比赛的时候没有想到应该用什么STL容器。

    然后想到了用结构体。

    结构体里面有选手的三个信息,然后对结构体进行排序。

    交上去发现错了,后来发现是自己在写判断条件的时候出错了。对于判断条件与思路一定要条理清晰才不容易出错。

    具体代码如下:

    #include<bits/stdc++.h>
    
    using namespace std;
    
    struct p
    {
        string s;
        int num;
        int scro;
    }P[200000];
    
    bool cmp(p X,p Y)  ///结构体排序
    {
        if(X.num==Y.num)
            return X.scro>Y.scro;
        return X.num<Y.num;
    }
    
    int main()
    {
        int n,m,t1,t2;
        string s1;
        scanf("%d %d",&n,&m);
        
        for(int i=0;i<n;i++)  ///读入数据
        {
            cin>>P[i].s>>P[i].num>>P[i].scro;
        }
        
        sort(P,P+n,cmp);///对数据按照一定的规则进行排序
        
        for(int j=1;j<=m;)  
        {
            for(int i=0;i<n;i++)
            {
                if(P[i].num==j)   ///这里的判断条件一定要很清楚,不然容易出错。
                {
                    if(P[i+1].num==j)
                    {
                        if((P[i+2].num==j&&P[i+1].scro!=P[i+2].scro)||(P[i+2].num!=j))
                           cout<<P[i].s<<" "<<P[i+1].s<<endl;
                        else
                           cout<<"?"<<endl;
                    }
                    else
                    {
                        cout<<"?"<<endl;
                    }
                    j++;
                }
            }
        }
    
        return 0;
    }
  • 相关阅读:
    边框上带有文字
    满屏展示
    javaScript中SetInterval与setTimeout区别
    圆形进度条
    抢购(秒杀)业务的技术要点
    Sybase 动态改变存储过程里查询的数据库
    在Hibernate映射文件里配置Sequence
    初学struts2杂乱笔记
    Struts2的学习链接
    DWR框架在web.xml的完整配置及注释
  • 原文地址:https://www.cnblogs.com/gaoss/p/5342974.html
Copyright © 2011-2022 走看看