【总结】-第一章-算法设计基础

有一个雄伟的计划,从头刷大白书!

主要是开头这几道题看起来好玩极了,欲罢不能

 我会挑比较屌的题写题解,一般的题就不写了,因为书上都有代码

然后大概每一小节都会来总结一下(坚持下来...吧),因为有的题虽然水但是很有启发

好了,,这是第一章的,开始写吧~! ~\(≧▽≦)/~


第一章已刷题数: 9


1.1-思维的体操

UVA-11292-The Dragon of Loowater

水题,贪心


UVA-11729-Commando War

水题,贪心


UVA-11300-Spreading the Wealth

水题不水!非常厉害的数学推导,详见大白书,反正我自己是没想到,而且告诉了我们一件神奇的事情!!

给定数轴上n个点,在数轴上的所有点中,中位数点距离所有给定点距离之和最小。

代数推导的思想很值得借鉴,这个小定理也很有可能用得到。


UVA-1388-Graveyard

题目描述见书,我自己写了一个直接暴力的竟然过了、、、

想法就是,肯定有一个点不用动,剩下的挪到最近的新坑里,就是最优答案(不知道为什么对,也不用纠结了)

我很有顾虑的是会不会出现两个点挪到同一个新坑里,事实上不会的,想想大概确实是这样的,

书上给了两种证明方法,一是再写个程序遍历所有数据,看是否有坑出错来检验猜想(这,,,,行是行但估计比赛时候没心情写)。

二是数学证明,详见书,非常赞。

至于他那个整体缩小四舍五入的天才想法。。也就看看吧。。就像是NBA球星的灌篮,学那个可能没啥用


UVA-10881-Piotr's Ants

题目描述见书,这道题关键在于想到两点:

①—— 两只蚂蚁相撞并各自掉头,可以理解成两个蚂蚁交换了灵魂仍然超前走去,这是等效的

②——每只蚂蚁的左右相对位置是从始至终都不变的

以上这两点我倒是都想到了,但是没有密切的联系起来,所以没有想到可靠的算法。

看了大白书恍然大悟,是我理解不够深入,忽略蚂蚁之间的差异,整体的最后状态就是初始状态推后 T 时间的状态(即根据①无视碰撞),所以大白书提出了精辟的一句话——”我们要搞清哪只蚂蚁是哪只蚂蚁?“,然后运用”两次排序“的方法,记录好蚂蚁的初始顺序即可。这种”两次排序的方法“还真是挺常见的,似曾相识啊!


UVA-1030-Image Is Everything

非常棒的题,写了题解

传送:http://blog.csdn.net/cryssdut/article/details/28924257


1.2-问题求解常见策略

UVA-11464-Even Parity

题目描述见书

注意这道题的解题思路: “枚举+递推”!

枚举感觉过不了的话不妨想一想能不能递推!!

关于如何利用位运算进行0-1串的遍历,写了一篇小短文,传送:http://blog.csdn.net/cryssdut/article/details/33402229


UVA-1352 - Colored Cubes

题目描述见书

看到之后毫无头绪的一道题,想了一阵之后看了代码。。果然好多没想到的地方。

笔记做在书上了。这里就不废话了。

ID函数配合vector进行对颜色名字的处理。

刘汝佳大大思路超级清晰,佩服。

这题最关键的地方,也是最应该学的是表示方块姿态的方法—— 起始在 1 面的颜色,姿态变换后跑到哪个面上去了!

也就是说姿态变换后,1,2,3,4,5,6  面上的颜色是什么。

有了这样的表示方式,枚举姿态和对比颜色就方便了许多.

枚举姿态是这样做的,就是一个方块的转体是可以累加的,用左转和上转两种转体方法就可以达到所有姿态

然后写个小程序来找就行了、

我呢就是没找到清晰的描述立方体的方法,所以越写越乱、


UVA-11210- Chinese Mahjong

给你十三张麻将,问听哪张牌。我代码还是和书上差不多,照书学的。

一开始的常量表来方便的转换牌种类名,这挺好的,要学习

接下来是一个递归回溯搜索,反正和dfs 也差不多

有个地方要注意,不要图省事写成 return search(dep+1)

还是应该写成  if( search(dep+1)) return true; 这种

它们是不一样的 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值