2013年台州学院第七届“星峰杯”大学生程序设计竞赛解题报告

第七届星峰杯ABCEFGHL解题报告-by qq279787304

对以下9题难度大致排了一下,供大一同学参考:(前两行都是可以做做看的)
GLCAE
FH
BJ 

A:4:3

题意:已知正整数w1和h1,求一对正整数w2和h2,使得|w2-w1|+|h2-h1|取得最小值,并且满足w2:h2=4:3。
分析:
这题是比较简单的,大家都做出来了。刚开始我想多了,用了高中的“a+b>=2*sqrt(a*b),当a==b时,a+b取得最大值”,

然后取周围的整数测试。交上去果断WA,因为没考虑到等号很有可能不成立。
下面正确解:令w2=4*t,h2=3*t,那么我们只要找到正整数t就好了,然后t从min(w1/4,h1/3)开始到max(w1/4,h1/3)结束,

找到一个t使得|4*t-w1|+|3*t-h1|最小,输出4*t和3*t就好了。

 

B:谁是冠军?

难点:记录路径
Floyd大家都会,就只讲一下记录路径吧。开个next[i][j],它的作用是记录从i点走到j点的下一个点,比如2->5的最短路

径是2->4->1->...->5,那么next[2][5]存的数就应该是2的下一个点4,输出4之后,就查next[4][5],它是1,输出后再查

next[1][5]...直到next[5][5]为止。
next记录过程:
1.刚开始全初始化为next[i][j]=j
2.Floyd:
for(k从1至n)
for(i从1至n)
for(j从1至n)
if(i到j可通过k使得路径更短 或者 路径相等时next[i][k]<next[i][j])
{
 next[i][j]=next[i][k];//改变路径
}

 

C:滚动特效

起点是l,终点是l+d*n,起始点距离是d*n,我们记m=d*n
总共要移动的长度是d*s,
每移动m*2就回到原来的那个点,
所以相当于只移动d*s%(m*2),我们记x=d*s%(m*2)
如果(x<=m) 输出l+x
否则 相当于从终点开始往左移(x-m) , l+m-(x-m)

E:My Trim Function

题意:对输入的一行中每个单词的首尾空格全去掉,中间的空格仅留一个。
最简单是用分割字符串strtok函数做,大一同学可能不知道。按你们自己的想法来也可以的。

F:手机上网流量

这题没什么好讲的。注意的就是在包月范围内的流量免费,就算没用完也要付月费。

G:计算面积

就是扇形OAB的面积减去三角形OAB再减去小圆的面积,也没什么好讲的。

H:Poker Solitaire Game

题意:编号1至13,4种花色,数字接龙,接得下去就Yes,否则No,从7开始。即手牌只要有7就Yes,只要有比桌上最大的值

大1且花色相同就Yes,只要有比桌上最小的值小1且花色相同就Yes。否则No
开数组desk[4][2]={99,-99,99,-99,99,-99,99,-99},desk[i][0]表示桌子上第i种花色的最小值,desk[i][1]表

示桌子上第i种花色的最大值。

J:Jumping Castle

还没做出来,应该就是用优先队列的BFS吧

 

L:A VS B

题意:定义3<4<5<6<7<8<9<10<11<12<13<1<2,输入其中的两个数,输出较大者。
开数组,令a[i]=i,然后令a[1]=14,a[2]=15

 

 

以上有什么不对的或是有更好的方法的或是有哪儿要详细讲的望指出。


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

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

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