台州学院2010年暑期程序设计兴趣班周赛(4)解题报告

周赛(4)AEGH题解题报告-by gyk___

 实力有限,只做了A、E、G和H四个题目……,高手完全可以忽略我的存在……

A题   Ubiquitous Religions

求宗教信仰相同的群体数目,简单题。可以用并查集做,即求祖先结点个数,做法和畅通工程一样。

 

 

E题   What Are You Talking About

即单词翻译,先输入的是模板,两两对应,然后给你一个句子,如果模板里面有出现的单词,就用另外一个代替,否则就原样输出。此题可以用map实现,开始的时候,我因为类型错误,WA了茫茫多次 - -、要注意,定义map的时候是用string的,所以,给它赋值的时候,也应该用string类型。map查找的时候,可以用m.find(str)!=m.end()或者m[str]!=””。

 

 

G   看病要排队

此题只要建立一个结构体doctor,包含病人病情优先级和挂号ID,然后创建doctor d[3][2002];

用以记录三个医生各自病人的情况。输入的时候,只管往数组中放入数据即可,在输出的时候,每次输出,都进行一次排序(如果用快排的话,要用二级排序,因为快排的不稳定性- -、)

然后输出第一个数据,接着把最后一个数据赋值个第一个数据,然后这一个数组数据个数减1,即下次输入的时候,把最后一个数据覆盖掉。输出部分参考代码:

else if(strcmp(c,"OUT")==0)
{
        scanf("%d",&a);
        if(i[a])
        {
               qsort(d[a-1],i[a],sizeof(d[a-1][0]),cmp);
               printf("%d\n",d[a-1][0].id);
               i[a]--;
               d[a-1][0]=d[a-1][i[a]];
        }
        else
               printf("EMPTY\n");
}
 

 

H题   Faulty Odometer

题意讲:每次数据增加时,逢4跳过(比如说:1后面是2,2后面是3,3后面是5,因为碰到4,所以跳过,又如39后面是50),可以得出1即为其本身,10为9,100为9*9即81,(注意考虑所计算数的和4的关系),主体代码如下:for(i=len-1;i>=0;i--)
{
        if(s[i]>='4')k=s[i]-'1';
        else k=s[i]-'0';
        n+=k*t;
        t*=9;
}


为解题报告打分
暂时不评分

★★
★★★
★★★★
★★★★★
发表您的评论(若贴AC代码或发表禁止言论等违禁行为将被删除并扣除积分)

|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.