测试总结

测试总结

考得太烂了,要提高自己写代码的能力,争取能想到的题目都能\(1A\)

最长子串

这题我只想记录下来告诉自己不要把for的范围搞错,要仔细想清楚。

期望值

题目描述:有\(n\)个城市,\(m\)个村庄,现要使得每个村庄都直接或间接连向城市,每次选择一个还没连上城市的村庄(选到每个的概率相等),然后选择该村庄最近的城市或已连上城市的村庄(选到每一个最近点的概率相等),连边(边长为两点间距离),求期望总长度。

solution
没想到写了期望值的总结,结果还是推错了公式,……
把每个点连边的期望长度加起来就是期望总长度,所以只需要求出每个点的期望值即可。枚举第\(i\)个村庄,然后将村庄与其他村庄的距离从小到大排序,选择距离相同的一段进行概率计算,即算出取这一距离的概率,假设有\(s\)个相同,然后再枚举在\(s\)中有\(j\)个在\(i\)前面,算出这一概率(用排列与组合),再把所有的概率累加就是取这一距离的概率。连上城市的也差不多那样处理。

扑克牌

题目描述:给出两堆扑克牌,然后从堆顶拿一张牌(哪一堆都可以,顺序任意,只要是堆顶即可),把拿出来的牌从下往上叠好,形成新的一堆牌,然后将其分成两堆,操作是从堆顶拿一张牌,任意放在两堆的堆顶。给出初始的两堆牌和终态的两堆牌,求操作方案。

solution
四维DP,其实盒子只是一个障眼法,其实就是从初始牌堆从下往上拿牌,然后放到终态堆。\(f[i][j][k][p]\)表示第一堆已拿走\(i\)张牌,第二堆已拿走\(j\)张,终态第一堆放了\(k\)张,第二堆放了\(p\)张的方案数,接下来的四种转移就是从第一堆拿到终态第一堆,或拿到终态第二堆,第二堆也一样。

河流

题目描述:有三条河,在每条河里游泳的速度为\(v\)(每条河都不同),每条河的宽度不同,长度一样,在岸上走的速度是一定的,求从左下角到右上角的最短时间。

solution
显然,最后再走路对答案不会有影响。由图可以联想到光的折射,而且光有最速性,就是光会用最短的时间经过一定的距离,所以按照折射定律来算就是最优解,首先三分第一步的高度(或最后一步的高度,然后所有变量都可以算出来了。

posted @ 2016-04-15 15:17  GerynOhenz  阅读(193)  评论(0编辑  收藏  举报