码迷,mamicode.com
首页 > 编程语言 > 详细

算法竞赛进阶指南 0x00

时间:2019-07-06 13:36:56      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:就是   元素   状态   中转   分数   组合   test   递归   路径   

0101a^b

快速幂模板,写一下快速幂的原理。

我们知道,一个数\(n\)在二进制(也可以是其他进制)下可以被表示为\(a_1+a_2*2^1+a_3*2^2+...+a_m*2^{m-1}\)。那么我们可以考虑将其分拆成二进制状态下的每一位,然后做幂运算。这样做的时间复杂度为\(O(log_2 n)\)

实现的过程类似于倒过来的分治(当然也可以直接分治实现),原理基于以下的式子。

对于k为偶数,\(n^k=(n^2)^{k/2}\)

对于k为奇数,\(n^k=n*(n^2)^{(k-1)/2}\)

0102 64位整数乘法

本质上和上一道题一样,注意数据范围即可。

0103 最短Hamilton路径

状压DP。

\(f[i][j]\)表示在经过的点状态为i,当前位置在j上路径长度的最小值。

枚举中转点进行转移即可。

0301 递归实现指数型枚举

dfs,在每个状态都输出一下。

0302 递归/非递归实现组合型枚举

dfs,限制结束长度。

0303 递归实现排列型枚举

dfs。

0304 IncDec Sequence

运用差分数列性质的妙题。

众所周知,差分就是前缀和的逆运算,当相邻两个元素相同的时候,差分数列里对应的一项会变为0,

当我们将某一个区间加上或减去1的时候,差分数列里只有两项变化,所以这就是个结论题了。

统计差分序列里正数之和与负数之和的绝对值(不包括第一项),取最大值就是第一个答案,差的绝对值+1就是第二个答案。

算法竞赛进阶指南 0x00

标签:就是   元素   状态   中转   分数   组合   test   递归   路径   

原文地址:https://www.cnblogs.com/ilverene/p/11142206.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!