关闭

浙大PAT甲级 1075

164人阅读 评论(0) 收藏 举报
分类:

结构体排序,没有参加第i题考试num[j]=-2,参加了但是没通过编译num[j]=-1;参加了拿了0分 num[j]=0。

如果有分数大于0,则应进行输出,否则不进行输出。

num[j]=-2 输出“-”, num[j]==-1||num[j]==0输出“0”。

AC代码:

#include<iostream>
#include<map>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<list>
#include<set>
#include<stack>
#include<cmath>
#include<vector>
#define inf 999999999
using namespace std;
int a[10];
int n,k,m;
struct node
{
    int id;
    int num[10]={0,-2,-2,-2,-2,-2};
    int all=0;
    int sum=0;
};
map<int,node> mm;
vector<node> v;
bool cmp(node x,node y)
{
    if(x.all!=y.all)
    {
        return x.all>y.all;
    }
    else
    {
        if(x.sum!=y.sum)
        {
            return x.sum>y.sum;
        }
        else
        {
            return x.id<y.id;
        }
    }
}
int main()
{

    scanf("%d %d %d",&n,&k,&m);
    for(int i=1;i<=k;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<m;i++)
    {
        node tmp;
        scanf("%d",&tmp.id);
        int d;
        scanf("%d",&d);
        int c;
        scanf("%d",&c);
        tmp.num[d]=c;
        if(mm.find(tmp.id)==mm.end())
        {
            mm[tmp.id]=tmp;
        }
        else
        {
            if(c>mm[tmp.id].num[d])
            {
                mm[tmp.id].num[d]=c;
            }
        }
    }
    map<int,node>::iterator it;
    for(it=mm.begin();it!=mm.end();it++)
    {
       int flag=0;
       for(int i=1;i<=k;i++)
       {
           if(it->second.num[i]>=0)
           {
               flag=1;
           }
           if(it->second.num[i]==-2||it->second.num[i]==-1)
           {
               it->second.all+=0;
           }
           else
           {
               it->second.all+=it->second.num[i];
           }
           if(it->second.num[i]==a[i])
           {
               it->second.sum++;
           }
       }
       if(flag==1)
       {
           v.push_back(it->second);
       }
    }
    sort(v.begin(),v.end(),cmp);
    int ci=1;
    printf("%d %05d %d",ci,v[0].id,v[0].all);
    for(int i=1;i<=k;i++)
    {
        if(v[0].num[i]==-2)
        {
            printf(" -");
        }
        else if(v[0].num[i]==-1)
        {
            printf(" 0");
        }
        else
        {
            printf(" %d",v[0].num[i]);
        }
    }
    printf("\n");
    for(int i=1;i<v.size();i++)
    {
        if(v[i].all!=v[i-1].all)
        {
            ci=i+1;
        }
        printf("%d %05d %d",ci,v[i].id,v[i].all);
    for(int j=1;j<=k;j++)
    {
        if(v[i].num[j]==-2)
        {
            printf(" -");
        }
        else if(v[i].num[j]==-1)
        {
            printf(" 0");
        }
        else
        {
            printf(" %d",v[i].num[j]);
        }
    }
    printf("\n");
    }
}


0
0
查看评论

*浙大PAT甲级 1114 并查集

考察并查集,并附加记录额外信息。 为了得到一个家族中的最小id,我们可以将最小的id做为这个家族的根。并将整个家族的信息如家族人数,家族房产数,家族的房产面积。 然后通过排序,输出相应结果。 AC代码: #include #include #include #include #include...
  • luowei5513
  • luowei5513
  • 2016-09-08 21:45
  • 550

PAT甲级.1075. PAT Judge (25)

题意 The ranklist of PAT is generated from the status list, which shows the scores of the submittions. This time you are supposed to generate the rankli...
  • R11happy
  • R11happy
  • 2017-02-13 00:00
  • 140

PAT甲级1015

1015. Reversible Primes (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue...
  • qq_22194315
  • qq_22194315
  • 2017-01-22 19:37
  • 66

PAT甲级1075

1075. PAT Judge (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
  • qq_22194315
  • qq_22194315
  • 2017-01-17 21:58
  • 125

浙大PAT 1004题 1004. Counting Leaves

#include int rel[110][110],cnt[110],node; int main(){ void dfs(int num,int level); int i,j,nonleaf,fat,childs,son; for(i=0;i<=100;i++){ ...
  • Sup_Heaven
  • Sup_Heaven
  • 2012-12-29 21:37
  • 2108

PAT(甲级)1015

1015. Reversible Primes (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue...
  • Leonardo1897
  • Leonardo1897
  • 2015-09-23 16:54
  • 412

PAT(甲级)1050

1050. String Subtraction (20) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue...
  • Leonardo1897
  • Leonardo1897
  • 2015-09-26 10:20
  • 256

PAT(甲级)1042

1042. Shuffling Machine (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue...
  • Leonardo1897
  • Leonardo1897
  • 2015-09-26 10:08
  • 154

浙大PAT 1019题 1019. General Palindromic Number

#include int main(){ int i,j,n,b,cnt; int str[50]; scanf("%d %d",&n,&b); cnt=0; while(n>=b){ str[cnt]=n%b; cnt++; n=n/...
  • Sup_Heaven
  • Sup_Heaven
  • 2012-12-29 21:47
  • 581

浙大PAT考试1009~1012(1010是个神题。。)

哎,pat1010居然用java写的,不仅用java写的,还加了二分,,,唉,智商捉急啊,主要是pat有的范围也不给清楚。给人造成遐想的空间。。 还是按顺序介绍。。 题目地址:http://pat.zju.edu.cn/contests/pat-a-practise 1009: 题目...
  • opm777
  • opm777
  • 2014-06-13 01:22
  • 1807
    个人资料
    • 访问:16185次
    • 积分:1024
    • 等级:
    • 排名:千里之外
    • 原创:91篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档