TopCoder SRM294 DIV2 Report

TopCoder SRM294 DIV2 Report

match dateSaturday, March 25, 2006

report dateTuesday, March 28, 2006


Preface:

好可惜呀,这次的比赛是有奖金可拿的,但我没能排上前两名,区居小三。

这次我和肖叉一起做的,感觉他很浮躁,不跟我搞配合就算了,还老是影响我。最后他的第二题没能PASS,名次不高。

Challenge环节是我最薄弱的部位呀,要是能Challenge掉一次就能拿一次奖金啦。题目倒不是很难,就是在做第二题的时候头很晕,可能是因为晚上1点做题或者是肖叉在旁边做或者是第一次做有奖金的等等等等。总之,保持好的状态是决定比赛结果的重要因素就对了,要做好的选手还要经常练习如何保持状态呀。


Problem 250 - ThreeCardMonte :

简单得没什么说的模拟题,DIV2第一题总是这么简单可以模拟三张牌,然后按输入依次换牌,最后输出A的位置就行了。


Problem 500 - Shuffling:

第二题是题意有点难懂,不过做法比较没啥难度的题目。大致意思是,给的两个参数一个是牌的数目,另一个是洗牌的一系列操作。洗牌操作是指,先将牌一分为二(相同的上下两堆),如果操作是aa>0)则上堆从第a张牌开始与下堆交叉,如果操作是aa<0)则下堆从第a张牌开始与上堆交叉。就如它所给的图一样。

我的解题思路和赛后的解题报告一样,是对每次操作后求一下ACE所在的位置,即一个输入是洗牌前的位置、参数是操作数、输出是洗牌后的位置。我也看到过有人用模拟洗牌的方法,即用一个数组模拟每张牌,虽然方法有点龊,不过可能需要思考的细节就少了,准确性也比较高。

虽然给了两个洗牌的图,但实际上两种情况可以用同一段代码处理,其操作数为一正一负,正时ACE无论在上堆还是下堆都保持不变,负时ACE在上则可以转为下堆,在下转为上堆处理。用下面代码转换i为操作数

if(i<0){

        pos=(pos+(cards>>1))%cards;

        i=-i;

}

转换后分析可得,若pos小于i,位置不变,若pos大于等于cards-i,位置也不变。只有在中间这一块,pos的值要处理:


if(pos<(cards>>1) && pos>=i){                                    // 下堆的i上方

        pos = ((pos-i) <<1) + i+1;                                         // i位置上面2pos-i

}else if(pos <(cards-i) && pos>=(cards>>1)){         // 上堆的i张下方

        pos = ((pos - (cards>>1))<<1) + i;                         // 类似地可得pos位置

                    }

Problem 1000 - Palindromist:

这是一道处理字符串的题目,题目要求是在字符串中添加空格,使得字符串变成若干单词组合的形式根据题意,用动态规划的方法是再合适不过了:

  1. res [ i ] = best (res [ k ] + word [ j ]) k + j = i


最后求得的res[len]len是目标字符串长度)就是解了




Links:


My Blog:

http://blog.csdn.net/ray58750034/


My statistic:

http://www.topcoder.com/stat?c=coder_room_stats&rd=9815&cr=20862220


SRM 289 - Problem Set & Analysis:

http://www.topcoder.com/tc?module=Static&d1=match_editorials&d2=srm294



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值