zoj 3705 Applications

模拟题

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<map>
#include<cmath>
#include<cstring>
using namespace std;

const double eps=1e-8;
struct student{
	char name[50];
	double score;
}ss[1005];

int maomao[1000],old[1000];
struct node{
	char teamname[50];
	int pos;
}ttt[1000];

int is_prime(int n){
    int i;
    for(i=2;i<=sqrt(n);i++){
        if(n%i==0) return 0;
    }
    return 1;
}

int cmp1(int a,int b){
    return a>b;
}

int cmp2(struct student a,struct student b){
    if(fabs(a.score-b.score)<eps) return strcmp(a.name,b.name)<0;
    else return a.score>b.score;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--){
		int n,m,i,j,k;
		memset(maomao,-1,sizeof(maomao));
		memset(old,-1,sizeof(old));
		scanf("%d%d",&n,&m);
		int r;
		scanf("%d",&r);
		for(i=0;i<r;i++) scanf("%d",&maomao[i]);
		int s;
		scanf("%d",&s);
		for(i=0;i<s;i++) scanf("%d",&old[i]);
		int q;
		scanf("%d",&q);
		getchar();
		for(i=0;i<q;i++){
			scanf("%s %d",ttt[i].teamname,&ttt[i].pos);
		}
		for(i=0;i<n;i++){
			char team[50],sex;
			int pp,c;
			scanf("%s %s %c %d %d",ss[i].name,team,&sex,&pp,&c);
			ss[i].score=0;
			for(j=0;j<q;j++){
				if(strcmp(team,ttt[j].teamname)==0){
					if(ttt[j].pos==1) ss[i].score+=36;
					else if(ttt[j].pos==2) ss[i].score+=27;
					else if(ttt[j].pos==3) ss[i].score+=18;
					break;
				}
			}
            if(sex==‘F‘) ss[i].score+=33;
            for(j=0;j<pp;j++){
                int proid;
                int flag1=0,flag2=0;
                scanf("%d",&proid);
                for(k=0;k<r;k++){
                    if(proid==maomao[k]){
                        ss[i].score+=2.5;
                        flag1=1;
                        break;
                    }
                }
                if(flag1==0){
                    for(k=0;k<s;k++){
                        if(proid==old[k]){
                            ss[i].score+=1.5;
                            flag2=1;
                            break;
                        }
                    }
                    if(flag2==0){
                        if(is_prime(proid)) ss[i].score+=1;
                        else ss[i].score+=0.3;
                    }
                }
            }
            double sy[1005];
            for(j=0;j<c;j++){
                scanf("%lf",&sy[j]);
            }
            getchar();
            sort(sy,sy+c,cmp1);
            double rr=0;
            if(c>=3){
                rr=(sy[2]-1200)*1.5/100;
            }
            ss[i].score+=rr;
		}
		sort(ss,ss+n,cmp2);
		for(i=0;i<m;i++) printf("%s %.3lf\n",ss[i].name,ss[i].score);
	}
	return 0;
}


zoj 3705 Applications,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。