摘要:/*状态压缩 这种集合元素不是特别多(n<16)的集合等分,可以考虑使用基于二进制的集合状态记录 首先预处理所有含有n/k元素的value值 用于最优化(动态规划)的时候使用 然后dp过程其实就是暴搜 针对子集合状态mask 考察他所有的子集合sub 有如下状态转移方程 dp[mask] = min
阅读全文
摘要:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), r
阅读全文
摘要:/*可重排列模版题目*/ class Solution { public: void print_permutation(vector<string>& ans ,int n , string &A , string s ,int cur){ if(cur == n){ ans.push_back(
阅读全文
摘要:/*给定非排序数据找第k大数字练手题*/ /*快排核心算法partition 线性时间找数组第k大的数 */ /*允许改变数组顺序 很多简单的题目但是对时间要求更优化的题目都可以转化成这个知识点*/ class Solution { public: int Partition(vector<int>
阅读全文
摘要:/*这个题目如果要求不重复元素二分就非常简单 含有重复元素就需要处理一些特殊的数据类型 例如[1,1,1,1] [1, 3,5]这些特判很简单 [10,10,10,10,10,1,10] [10,1,10,10,10,10,10] 这种nums[mid] = nums[right]的情况挖坑数据就比
阅读全文
摘要:/*简单二分题目 在每次二分决策的时候对应控制选择左区间或者右区间即可*/ class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int len = nums.size(); int lef
阅读全文
摘要:/*题目要求时间复杂度只能是O(logn),所以只需考虑如何二分 按照某个点旋转 其实按照left mid right的增减关系能够确定旋转点在哪个分区 这就可以先logn时间找到旋转的点的位置centre 第二次找索引只需要在旋转位置centre的基础上对索引进行取mod即可*/ class So
阅读全文
摘要://逻辑分析题目 + 分情况讨论 最大的数据就是若干种情况 依次找全并比较大小即可 class Solution { public: int maximumProduct(vector<int>& nums) { sort(nums.begin() , nums.end()); int len =
阅读全文
摘要:Q1(poj 3070): 求斐波那契数列的第n个,n最大取到1000000000,。 分析:求这种较大递推数列的一般方法使用矩阵快速幂的,这里题目直接给出了矩阵形式,就不需要进行友矩阵(A)的构造了,也不需要进行最后一次矩阵和向量的相乘,直接初始化矩阵规模,进行快速幂即可。 不过这个结论倒是可以记
阅读全文
摘要:Q1(hdu6209): 给出常数k,欲用类似二分搜索的迭代策略,求解方程k^2=x^3分母不超过100000的最近似的解的最简分数形式。 分析:这是一个很直观方程求数值解的数值分析问题,因此应该能够联想到的是用迭代搜索策略。这里有如下两种策略: 策略1(二分迭代):可行解在[a/b , c/d]中
阅读全文
摘要:Q1(hdu1402): 给出两个很大的数字A,B,计算二者乘积。 分析:这个题目java应该能过,用FFT做能够加速计算。这里将字符串A按权(10进制)展开,前面的系数就是多项式的系数,这样就构造出了多项式乘积形式,然后用FFT加速即可。 参考代码如下: #include <stdio.h> #i
阅读全文
摘要:二叉树不仅结构简单、节省内存,更重要是是这种结构有利于对数据的二分处理。之前我们提过,在二叉树的基础上能够派生很多经典的数据结构,也是下面我们将进行讨论的知识点: (1) 提高数据查找效率的二叉排序树。 (2) 优先队列的最佳存储结构的二叉堆。 (3) 兼具二叉排序树和二叉堆性质的树堆。 (4) 用
阅读全文
摘要:二叉树是树结构中的重要概念,一些特殊的二叉树如满二叉树和完全二叉树由于节点序号的特殊关系,在一些算法中十分常见。 这篇文章将从三个方面介绍有关二叉树的知识点: (1) 普通有序树转化为二叉树。 (2) 计算二叉树路径。 (3) 通过两种遍历确定二叉树结构。 一.普通有序树转化为二叉树 其实不仅限于有
阅读全文
摘要:写在前面:也是万年没更新博客了……大二一年快过去了回首一下发现大二完全就不更新博客……原因很多吧,其一是感觉整理博客虽然能够加深理解对学习帮助很大但是还是很花时间的,效益比较低,也是不如多看看书多刷刷题;其二也可以说是最主要的原因,大二一年比较功利,做事学习也是很侧重性价比,想绩点各方面刷好然后杠一
阅读全文
摘要:叉积: 在平面中我们为了度量一条直线的倾斜状态,为引入倾斜角这个概念。而通过在直角坐标系中建立tan α = k,我们实现了将几何关系和代数关系的衔接,这其实也是用计算机解决几何问题的一个核心,计算机做的是数值运算,因此你需要做的就是把几何关系用代数关系表达出来。而在空间中,为了表示一个平面相对空间
阅读全文
摘要:这篇文章着重记录c++中STL的用法。主要粗略的介绍其用法,以知识点的形式呈现其功能,不会深入源码分析其工作原理。 排序和检索. sort(a,a+n),对a[0]往后的n个元素(包括a[0])进行排序,默认的这种形式由小到大的排序.其属于<algorithm>这个头文件中,它可以给任何对象进行排序
阅读全文
摘要:Q1(uva 725): 给出一个整数n,找到所有的0~9的排列,是的前五个数组成的整数能够整除后五个数组成的整数。 分析:很典型的基本暴力枚举法,暴力求解往往伴随优化。这道题目的优化点在于枚举后五位得到10x9x8x7x6种情况,然后基于这些情况和等式关系,然后得到前面的整数,然后只需判断一下是否
阅读全文
摘要:关于欧拉函数: Q1(Problem source : poj 2478): Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b
阅读全文
摘要:在面向ACM/ICPC的博弈问题这一块,主要涉及组合游戏和延伸的SG函数,还有一些比较杂的问题,需要用找规律或者画NP表的方法来解决,这些问题在分析之前,都涉及将问题抽象成一些模型或者将抽象的问题具象化以便于后面方便得分析。这篇文章就是通过一些具体的问题,来探讨博弈模型的转化。 我们来看一道题目。(
阅读全文
摘要:博弈,在一般人的脑海中多半是个高深的词汇,我们常常将它与一个人联系起来——纳什均衡的发现者John Forbes Nash,以及他的那部经典的传记电影——《美丽人生》。而对这位诺贝尔经济学家最好的尊敬,就是懂一些博弈论的知识。 博弈,先不管它到底是运筹学还是经济学还是数学,我们从最原始的角度去定义它
阅读全文