题目在这里:http://www.matrix67.com/blog/article.asp?id=186
第一题是老题了,到处都有,连Vijos上居然也找到了一个(VOJ1214)。
一个O( sqrt(k) )的方法是先算前面sqrt(k)个值,然后剩下的部分除出来的商会出现大段大段相等的情况(这些商的值从sqrt(k)一直变到0,因此最多有sqrt(k)段),每一段的余数是个等差数列,它们的和可以直接算出来。
第二题,递归问题递归求解。看看样例怎么来的吧,312的右边可以直接确定为314,因为最后一位是2,它的右边就是相同大小的4。312的下边是31的下边,即34。312的左边就是31的左边,而31的左边仍然不能确定(因为1的左边不知道是什么,还需要看它所在的更大的三角形),于是继续递归为3的左边,3的左边是4。这个递归操作完全是多余的,其实只需要从后往前扫描一遍输入的字串就可以了,分别把第一次出现的1、2、3改成4。还有,如果最后一位是4,那就把它改成1、2、3。
第三题当成答案提交类的题目乱搞,可以搜,也可以用带状态压缩的动态规划。
第四题动态规划,F[i,j,k]表示从 i 到 j 这一段,且最底下被涂成了颜色k后所需要的最少次数。
Matrix67原创
转贴请注明出处
07年重庆队选拔赛试题 非官方题解 by Matrix67
最新推荐文章于 2023-12-13 10:46:16 发布
本文介绍了四道算法竞赛题目的解题思路与技巧。第一题利用O(sqrt(k))方法解决数值序列问题;第二题通过字符串处理及逆向思维解决递归问题;第三题采用状态压缩动态规划或搜索解决组合优化问题;第四题则使用动态规划解决涂色问题。
3639

被折叠的 条评论
为什么被折叠?



