摘要: 处理何种问题:给定n种物品和一个容量为V的背包,物品i的体积为vi,其价值为pi,求其最终可以装进背包的物品最大价值。 性能:时间复杂度为O(nV) 原理: 实现步骤:对于该状态转移方程的二维数组实现方式我就不在这里说了。 一维数组的实现方式:因为该方程式其实每次只需要考虑第i个和第i-1个,可以用 阅读全文
posted @ 2018-08-16 13:09 逃往火星的猫 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 处理何种问题:有n个石子,两个人轮流取石子,规定至少取1个,最多取k个,最后取光者获胜。 性能:时间复杂度为O(1) 原理:n%(k+1)==0,后手必胜(先手无论怎么取,后手只需要补全至k+1个即可);n%(k+1)!=0,先手必胜(先手只需要第一次将n%(k+1)的余数取尽,先手就转成“后手”了 阅读全文
posted @ 2018-08-15 19:18 逃往火星的猫 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 处理何种问题:有一堆个数为n的石子,游戏双方轮流取石子,满足: 1) 先手不能在第一次把所有的石子取完,且最少取1个; 2) 之后每次可以取得石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取得石子数的两倍)。 约定取走最后一个石子的人为赢家,求谁获胜。 此类问题有一个结论:当n是斐波那契数 阅读全文
posted @ 2018-08-14 20:49 逃往火星的猫 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 处理何种问题:有m 种类型的物品(每种类型的物品个数可视为无限),从中选出n个物品,求物品s至少有一次连续选k件的方案数。 例题:抛硬币,抛n次,求正面至少连续出现k次的种数。抛3次,连续出现2次正面的种数是3(110,011,111)。 性能:时间复杂度为O(nm),空间复杂度也是(nm)。 原理 阅读全文
posted @ 2018-08-14 17:01 逃往火星的猫 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 一. n条直线分割平面 l 问题描述:n条直线,最多可以把一个平面分为多少个区域。 l 公式:f(n)=f(n-1)+n=n(n+1)/2+1; l 分析:当有n-1条直线时,平面最多被分割成 f(n-1) 个区域。则第n条直线要切成的区域数最多,就必须于每条直线相交且不能有同一交点。这样就会得到( 阅读全文
posted @ 2018-08-09 20:54 逃往火星的猫 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 处理何种问题:凸包可以看成在木板上钉许多钉子,用一根橡皮筋框住所有钉子所得到的多边形,最终能求得都由哪些钉子构成该凸包。如下图所示: 性能:由一个快排(O(nlogn))和一个遍历找点(O(n)),总体时间复杂度为O(nlogn)。 原理: 点:A(x1,y1),B(x2,y2) 向量AB=(x2- 阅读全文
posted @ 2018-08-06 20:56 逃往火星的猫 阅读(2214) 评论(0) 推荐(1) 编辑
摘要: #include #include #include using namespace std; int GCD(int a,int b)//虽然这个没有下面那个GCD简便,但是这个没有爆栈的风险,而且时间和下面那个一样 { int temp; while(a!=0) { temp=a; a=b%a; b=temp; ... 阅读全文
posted @ 2018-07-24 17:24 逃往火星的猫 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 截流法进行区间更新,这种算法在某些特定情况下很简便,但是其局限性也很明显,针对各类型的题目酌情使用,之所以将其挑出来单独写一篇是因为其思想没见过,很是新颖,所以在这里值得一提。 算法性能:在进行区间修改和单点修改时的算法时间复杂度时都是 O(1),但是进行查询时的时间复杂度是 O(n),对于这种情况 阅读全文
posted @ 2018-07-24 14:35 逃往火星的猫 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 作用:用于求一个二分图中的最大匹配数。 算法:一种类似手动模拟的一种暴力算法。 说明:柯尼希定理:一个二分图的最大匹配数等于这个图中最小点覆盖数,最小点覆盖数(一条边上有一点覆盖即为该边覆盖,求覆盖所有边的最小点数)。柯尼希定理的推论:最小路径覆盖=节点数-最大匹配数(最小路径覆盖—选择最少不相交的 阅读全文
posted @ 2018-05-03 18:52 逃往火星的猫 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 记不得哪找的板子,感谢原作者。真的很好用!!!!!!! 阅读全文
posted @ 2018-04-22 20:40 逃往火星的猫 阅读(361) 评论(0) 推荐(0) 编辑