USACO 1.1.2 Greedy Gift Givers

来源:互联网 发布:淘宝 人工服务电话号码 编辑:程序博客网 时间:2024/05/21 09:21

纯模拟,刚开始我把题意看错了,以为遇到0 0就终止,WA多次。其实题意是要接受NP组数据(NP是总人数),对每组数据进行简单处理就可以,不再赘述。


代码(普通查找O(n)):

/*ID: michael139LANG: CPROG: gift1*/#include<stdio.h>#include<string.h>typedef struct {    char name[20];    int money;} Person;int main () {    FILE *fin  = fopen ("gift1.in", "r");    FILE *fout = fopen ("gift1.out", "w");    int n,i,j,a,b,k;    char temp_name[20];    Person p[15];    fscanf(fin,"%d",&n);    for (i=0;i<n;i++) {        fscanf(fin,"%s",p[i].name);        p[i].money = 0;    }    for (k=0;k<n;k++){        fscanf(fin,"%s",temp_name);        fscanf(fin,"%d%d",&a,&b);        if (!b) continue;        for (i=0;i<n;i++) {            if (!strcmp(p[i].name,temp_name)) {                p[i].money -= (a-a%b);                break;            }        }        for (i=0;i<b;i++) {            fscanf(fin,"%s",temp_name);            if(a) for (j=0;j<n;j++) {                if (!strcmp(p[j].name,temp_name)) {                    p[j].money += (a/b);                    break;                }            }        }    }    for (i=0;i<n;i++) fprintf(fout,"%s %d\n",p[i].name,p[i].money);    return 0;}


原创粉丝点击