• PTA乙级1015


    题意

    题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312

    中文题,简单来说就是:

    在德和才都>=l的条件下,按照下面顺序的优先级输出:
    德>=h  才>=h  总分高->低
    德>=h  才<h  总分高->低
    德<h  才<h  德>=才  总分高->低
    德>=l  才>=l  总分高->低
    

    思路

    四个条件存在四个数组里,然后每个数组单独去排序(总分高->低的一个cmp),最后四个数组分开输出即可。

    我本来全部都存在一个数组里再去排序的,但是好像行不通,我怎么写都是有几行数据有问题。

    AC代码

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    
    const int N=100010;
    struct node
    {
        int id,d,c,sum;
    }ans1[N],ans2[N],ans3[N],ans4[N];
    int n,l,h;
    
    bool cmp(node x,node y)
    {
        if(x.sum!=y.sum) return x.sum>y.sum;
        if(x.d==y.d) return x.id<y.id;
        return x.d>y.d;
    }
    
    int main()
    {
        cin>>n>>l>>h;
        int id,x,y,cnt1=0,cnt2=0,cnt3=0,cnt4=0;
        for(int i=0;i<n;i++)
        {
            cin>>id>>x>>y;
            if(x>=l&&y>=l)
            {
                if(x>=h&&y>=h)
                    ans1[cnt1].sum=x+y,ans1[cnt1].d=x,ans1[cnt1].c=y,ans1[cnt1++].id=id;
                else if(x>=h&&y<h)
                    ans2[cnt2].sum=x+y,ans2[cnt2].d=x,ans2[cnt2].c=y,ans2[cnt2++].id=id;
                else if(x<h&&y<h&&x>=y)
                    ans3[cnt3].sum=x+y,ans3[cnt3].d=x,ans3[cnt3].c=y,ans3[cnt3++].id=id;
                else if(x>=l&&y>=l)
                    ans4[cnt4].sum=x+y,ans4[cnt4].d=x,ans4[cnt4].c=y,ans4[cnt4++].id=id;
            }
        }
        sort(ans1,ans1+cnt1,cmp);
        sort(ans2,ans2+cnt2,cmp);
        sort(ans3,ans3+cnt3,cmp);
        sort(ans4,ans4+cnt4,cmp);
        cout<<cnt1+cnt2+cnt3+cnt4<<endl;
        for(int i=0;i<cnt1;i++)
            cout<<ans1[i].id<<" "<<ans1[i].d<<" "<<ans1[i].c<<endl;
        for(int i=0;i<cnt2;i++)
            cout<<ans2[i].id<<" "<<ans2[i].d<<" "<<ans2[i].c<<endl;
        for(int i=0;i<cnt3;i++)
            cout<<ans3[i].id<<" "<<ans3[i].d<<" "<<ans3[i].c<<endl;
        for(int i=0;i<cnt4;i++)
            cout<<ans4[i].id<<" "<<ans4[i].d<<" "<<ans4[i].c<<endl;
        return 0;
    }
    
  • 相关阅读:
    C# 设置 Excel 条件格式 与 冻结窗口
    Exce折叠效果(数据组合)
    [一点一滴学英语]20050829
    Tencent Messenger
    很有趣的一篇文章:不使用Linux的五大理由
    Tencent Messenger (continued)
    N久没有听过这么搞笑的RAP了
    [一点一滴学英语]20050827
    [Eclipse笔记]SWT真正的优势不是快这么简单
    [一点一滴学英语]20050828
  • 原文地址:https://www.cnblogs.com/OFSHK/p/14494461.html
Copyright © 2020-2023  润新知