PAT (Advanced Level) 1075. PAT Judge (25)

简单模拟题。

注意一点:如果一个人所有提交的代码都没编译通过,那么这个人不计排名。

如果一个人提交过的代码中有编译不通过的,也有通过的,那么那份编译不通过的记为0分。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<queue>
#include<string>
#include<algorithm>
using namespace std;

const int maxn=10000+10;
int n,k,m;
int val[10];

struct X
{
    int Rank;
    int num;
    int id;
    int tot;
    int get[10];
}s[maxn],ans[maxn];
int sz;

bool cmp(const X&a,const X&b)
{
    if(a.tot==b.tot&&a.num==b.num) return a.id<b.id;
    if(a.tot==b.tot) return a.num>b.num;
    return a.tot>b.tot;
}

int main()
{
    scanf("%d%d%d",&n,&k,&m);
    for(int i=1;i<=k;i++) scanf("%d",&val[i]);
    for(int i=1;i<=n;i++)
    {
        s[i].id=i;
        s[i].num=0;
        s[i].tot=0;
        for(int j=1;j<=k;j++) s[i].get[j]=-2;
    }

    for(int i=1;i<=m;i++)
    {
        int id,pro,get;
        scanf("%d%d%d",&id,&pro,&get);
        s[id].get[pro]=max(s[id].get[pro],get);
    }

    sz=0;
    for(int i=1;i<=n;i++)
    {
        int fail=1;
        for(int j=1;j<=k;j++)
            if(s[i].get[j]>=0) fail=0;
        if(fail==1) continue;
        ans[sz++]=s[i];
    }

    for(int i=0;i<sz;i++)
        for(int j=1;j<=k;j++)
            if(ans[i].get[j]==-1) ans[i].get[j]=0;

    for(int i=0;i<sz;i++)
    {
        for(int j=1;j<=k;j++)
        {
            if(ans[i].get[j]==-2) continue;
            ans[i].tot=ans[i].tot+ans[i].get[j];
            if(ans[i].get[j]==val[j]) ans[i].num++;
        }
    }

    sort(ans,ans+sz,cmp);

    ans[0].Rank=1;
    for(int i=1;i<sz;i++)
    {
        if(ans[i].tot==ans[i-1].tot)
            ans[i].Rank=ans[i-1].Rank;
        else ans[i].Rank=i+1;
    }

    for(int i=0;i<sz;i++)
    {
        printf("%d %05d %d",ans[i].Rank,ans[i].id,ans[i].tot);
        for(int j=1;j<=k;j++)
        {
            printf(" ");
            if(ans[i].get[j]==-2) printf("-");
            else printf("%d",ans[i].get[j]);
        }
        printf("\n");
    }

    return 0;
}
时间: 2024-11-01 01:43:43

PAT (Advanced Level) 1075. PAT Judge (25)的相关文章

PAT (Advanced Level) 1075 PAT Judge

题解 模拟. 题目有三种状态. 第一种为题目得到了一定的分数( >= 0): 第二种为题目提交过但是没有通过编译(代码中状态为 -2 ,输出对应 0 ): 第三种题目根本就没提交过(代码中状态为 -1 ,输出对应 ‘-’ ). 考生只要至少有一道题目满足第一种情况,即可将这位考生的信息输出出来. 代码 #include<bits/stdc++.h> using namespace std; int N,K,M,score[6]; struct node { int name,grade[

PAT (Advanced Level) 1083. List Grades (25)

简单排序. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include<string> #include<iostream> #include<algorithm> using namespace std

PAT (Advanced Level) 1021. Deepest Root (25)

先并查集判断连通性,然后暴力每个点作为根节点判即可. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<queue> #include<vector> using namespace std; struct Edge { int a,b; }e[20000]; int n,sz

PAT (Advanced Level) 1020. Tree Traversals (25)

递归建树,然后BFS一下 #include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<queue> #include<vector> using namespace std; const int maxn=40; int a[maxn],b[maxn]; int n,tot; struc

PAT (Advanced Level) 1114. Family Property (25)

简单DFS. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<algorithm> using namespace std; struct X { int id; int Father,Mother; int k;

PAT (Advanced Level) 1085. Perfect Sequence (25)

可以用双指针(尺取法),也可以枚举起点,二分终点. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<algorithm> using namespace std; int n; long long k; long l

PAT (Advanced Level) 1071. Speech Patterns (25)

简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<stack> #include<queue> #include<string> #include<iostream> #include<algorithm> using namespace std;

PAT (Advanced Level) 1109. Group Photo (25)

简单模拟. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<map> #include<queue> #include<stack> #include<string> #include<algorithm> #include<iostream> using namespace std

PAT (Advanced Level) 1101. Quick Sort (25)

树状数组+离散化 #include<cstdio> #include<cstring> #include<cmath> #include<map> #include<algorithm> using namespace std; const int maxn=100000+10; int a[maxn],ans[maxn],c[maxn],b[maxn]; int n; map<int,int>m; int lowbit(int x)