1005
I Think I Need a Houseboat
纯吐槽……为什么不是Nice Boat- -|||
1022
Packing Unit 4D Cubes
先Floodfill填充内部格,然后一个面构成表面的充要条件是它一侧属于方块另一侧不属于方块。
1029
False coin
根据每次操作,判断每一颗coin是否可能偏重,是否可能偏轻。然后总体判断。
1031
Fence
光源在多边形内部则2*pi的弧度都被照到,否则只能照部分弧度。在算部分弧度的时候要小心,可能会按照算法算出来大于2*pi的情况的。这需要特判。
1034
The dog task
二分匹配,一段Bob的路径匹配一个景点。
1036
Gangsters
dp。方程是显然的,实现的时候需要离散化+滚动。离散化是对gangster到达时间进行离散,dp状态转移的时候也就适当扩大max查询范围大小就可以了。为了达到最好的效率,可采用Sparse Table结构来完成查询操作。
1037
A decorative fence
dp。方程是显然的,实现的时候需要离散化+滚动。离散化是对gangster到达时间进行离散,dp状态转移的时候也就适当扩大max查询范围大小就可以了。为了达到最好的效率,可采用Sparse Table结构来完成查询操作。
1041
John's trip
从起点开始每个点按边序号递增顺序DFS。
1043
What's In A Name?
名字和id去二分匹配。再求最大匹配中的边是否是必须的(即去掉后会导致匹配数减少),如果是,名字就和id匹配上。
1045
Bode Plot
根据有关交流电的知识,可以得到VR^2 + (VR*w*C*R)^2 == (V*w*C)^2
1054
The Troublesome Frog
注意Frog的稀疏性。搜索时只需有序存下所有Frog的位置然后判是否存在的时候用二分即可。
以下7题(1069~1075)是臭名昭著的Tehran2001题。除较水的1075外题解见下
1069
The Bermuda Triangle
首先,三角形的存储方式如下:
//暂缺图
在这个图里可以看到,六边形相当于变成了2n*2n的二维格点,这二维格点中缺了2个n*n的等腰直角三角形
数据结构通了以后基本上这题裸搜就能过了,DFS的时候预先保存一下当前位置最大能放个多大的三角形,而不是每次轮到搜了再去判是否合法。这样就能过了,至少偶就这样过掉的。
1070
Deformed Wheel
恶心的计算几何模拟。
算法很简单,每次二分,得到最大滚动的角度。然后滚过去以后,改变支撑点,继续滚,直到没法滚为止。
但这题的精度十分恶心。所有的地方都采用同一个epsilon的话一般会出问题。关键原因是这里有三角函数这个精度十分不准的东西,因此需要采用不同量不同对待,对于二分的滚动角度,精度取高一点(偶取1e-9),否则滚动误差太大的话再+个三角函数误差就wa了。对于取三角函数以后的值(即,滚动以后各顶点的新值),这个精度需要取得弱一些(偶取1e-6),否则滚动角度的精度在三角函数的制约下无法达到想要的较高的精度。
当然,可能是偶做得弱了。大牛若可以单epsilon搞定欢迎留言。
1071
Illusive Chase
相对来说一道水题。倒推,求每一步可能由哪些格子走过来,裸dp就可以了。
1072
Puzzle Out
为了满足poj那bt的5s(tehran是120s,tokyo是180s,zoj是10s),Trie的存储是必须的。其次,Trie的存储又是可能会mle的,所以偶只得采取左儿子右兄弟的存储方式,来节省原来数组node表示法里在叶节点浪费的那些内存(浪费的是搜索的时候的时间)。
这样程序跑进了3s内。
然后再取待测字串里公用字符最多的进入dfs,可以跑进1.2s内。
接下来就歪门了……通过适当的挑选第一个开始搜的词(偶没发现啥规律……纯粹按照数据给的来枚举出最快的),可以跑进0.5s内。这时单数据最大的搜索量(dfs调用次数)不超过30w。。。也算是不错的成绩了。如果把常数弄小点的话估计rank能更高些。。。不过偶实在是没这兴趣也没这能力了。。。
p.s. Google了一下,HNU居然是1s的时限orz……然后是0人ac。。。
1073
The Willy Memorial Program
还是恶心模拟。两个管连通以后就可以视作合并成1个管,截面积相加。
细节方面,主要要把过程分为如下2个模块:
1.确定真正的初始管。因为可能存在a的底部连到b管的情况。这样如果a作为源的话事实上当b没满的时候a是不可能有积水的。因此初始时应当把b看作源而不是a。这样的好处是对于源,每次加水肯定会导致源的水位上涨。
2.合并管道。当水位上到某个连通器的时候两侧的管可以合并。
然后放心大胆地调用就可以了。数据规模不大,合并也根本没有并查集的必要。裸干就可以了。
1074
Parallel Expectations
标准dp。思路lrj的黑书已经给出。注意黑书上对于题意的理解是错的。真正等概率分布的是每一步跑哪个核(当两个核都能跑的时候各50%)而不是所有程序执行的排列(每个排列等概率)。仔细体会里面的不同。这样,只需要在dp以前求出该情况的概率即可。而这可以和dp数组的计算同步进行。
1076
Bowl
/*Still Under Construction*/
转载于:https://www.cnblogs.com/FancyMouse/articles/1230077.html