usaco3.2

3.2.1 factorials

 求阶乘结果的第一非0位,办法很多,数据范围不大,可以保留末5位,构造积性函数等。最好地办法是直接模10,但阶乘时跳过因子2和5,并记录,最后再补乘。

 

3.2.2 stringsobits

 首先要搞清楚题目的序列关系,首先考虑大小,再考虑位数,不足前添0。所以最关心的应该是最高位的1的位置。详见这篇日志

 

3.2.3 Spinning wheel

 这题看似复杂,其实数据范围不大,模拟可以轻易解决,思考过不用模拟的办法,无果,可能功力不够。

 

3.3.4 Feed ratios

 线性代数,模拟高斯消元,或者直接套公式,注意元素有0的情况,这种细节很多。

 

3.3.5 Magic Squares

 操作种类不多,bfs最轻松。先写好表达各种操作的常量数组可以减小编程复杂度。判重可以开个7维数组,有点勉强,不过够用了,另外一个办法是,康托展开,可以把一些元素的排列数与10进制对应起来,映射到更小的范围,数组就能直接开下了。

 

3.3.6 Sweet butter

 做完这题才真正掌握了dijkstra ,B-ford 和floyd ,3个求最短路的算法,以及他们的优化。以前觉得松弛操作很奇怪,明明让路变短了,却叫松弛,现在觉得这个词很形象,原来直接相连的两点,松弛后变成了通过其它边间接相连,总的权值比以前直接相连小了,在图上看来,间接连接后就像把原来紧绷的边松开了。

 

 

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

你可能感兴趣的:(USACO)