2020 11 07 天梯赛

7-9 点赞狂魔

之前比赛的时候之所以WA是因为忽略了n==0和n==1的情况。这提醒我要注意观察题目所给变量的取值范围,注意临界值。

结构体排序,再按照要求格式化输出即可。

代码如下:

#include<bits/stdc++.h>

using namespace std;

struct per

{

    string name;

    int num=0;

    int sum=0;

}p[200];

bool cmp(per i,per j)

{

    if(i.sum==j.sum)

    {

        return i.num<j.num;

    }

    return i.sum>j.sum;

}

int main()

{

    int n,i,j,k;

    cin>>n;

    string s;

    for(i=0;i<n;i++)

    {

        cin>>s;

        p[i].name=s;

        cin>>k;

        p[i].num=k;

        set<int>ss;

        for(j=0;j<k;j++)

        {

            int tem;

            cin>>tem;

            ss.insert(tem);

        }

        p[i].sum=ss.size();

    }

    sort(p,p+n,cmp);

    if(n<3)

    {

        bool flag=0;

        for(i=0;i<n;i++)

        {

            flag=1;

            if(i==0)

            cout<<p[i].name;

            else

            {

                cout<<" "<<p[i].name;

            }

        }

        for(i=0;i<(3-n);i++)

        {

            if(flag==1)

            {

                cout<<" -";

            }

            else

            {

                cout<<"- - -";

            }

        }

        cout<<endl;

    }

    else

    {

        for(i=0;i<3;i++)

        {

            if(i==0)

            {

                cout<<p[i].name;

            }

            else

            {

                cout<<" "<<p[i].name;

            }

        }

        cout<<endl;

    }

    return 0;

}

7-11 彩虹瓶

想复杂了。真正AC的代码比我WA的代码简单多了。如果一个题的代码太过复杂,要及时转换思路。

用一个栈来模拟题目中的架子,然后循环模拟即可。

代码如下:

#include<bits/stdc++.h>

using namespace std;

int main()

{

    int n,m,k,i,j;

    cin>>n>>m>>k;

    int a[1000+8];

    while(k--)

    {

        bool flag=1;

        stack<int>s;

        set<int>judge;

        int d=1;

        for(i=0;i<n;i++)

        {

            cin>>j;

            s.push(j);

            judge.insert(j);

            if(s.top()==d)

            {

                s.pop();

                judge.erase(d);

                d++;

                while(!s.empty())

                {

                    if(s.top()==d)

                    {

                        s.pop();

                        judge.erase(d);

                        d++;

                    }

                    else

                    {

                        break;

                    }

                }

            }

            else

            {

                ;

            }

            if(s.size()>m)

            {

                flag=0;

            }

            if(judge.find(d)!=judge.end())

            {

                flag=0;

            }

        }

        if(flag==1)

        {

            cout<<"YES"<<endl;

        }

        else

        {

            cout<<"NO"<<endl;

        }

    }

    return 0;

}

 

posted @ 2020-11-15 18:10  chengxvzhishen  阅读(180)  评论(0编辑  收藏  举报