编程
文章平均质量分 80
in_han
这个作者很懒,什么都没留下…
展开
-
几何
1.直线的两点式: 过两点(x1, y1), (x2, y2) 的直线方程为: (y - y1) / (x - x1) = (y - y2) / (x - x2) 即 x(y1 - y2) + y(x2 - x1) + (x1*y2 - x2*y1) = 0 2.点到直线 L: Ax + By + C = 0 的距离为: L的方向向量1原创 2010-05-11 12:33:00 · 504 阅读 · 0 评论 -
Range Minimum Query( RMQ )
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j方法一:蛮力搜索,时间时间复杂度 O( n )。方法二:O(N^2), O(1)利用动态规划进行预处理,计算出M:M[ i ][ j-1 ] 为 i 到 j-1 最小值索引,则M[i][j] = A[j] 方法三:O(NlogN), O(原创 2013-09-10 00:50:38 · 665 阅读 · 0 评论 -
线段树的应用
定义线段树在区间[i, j] 上如下: 第一个节点维护着区间 [i, j] 的信息。 if i应用范围:对一个区间整体进行操作,如寻找最大(小)值,整体加线段树有如下应用:1. Range Minimum Query( RMQ )问题: 参见:http://blog.csdn.net/in_han/article/details/11493原创 2013-09-10 22:55:33 · 801 阅读 · 0 评论 -
vi ---> emacs
VI:虽然vi的操作方式与其他常用的文本编辑器(如gedit)很不相同 ,但是由于其运行于字符界面,并可用于所有unix/linux环境,目前仍被经常使用。1.命令模式:命令模式是启动vi后进入的工作模式,并可转换为文本编辑模式和最后行模式。在命令模式下,从键盘上输入的任何字符都被当作编辑命令来解释,而不会在屏幕上显示。如果输入的字符是合法的vi命令,则vi就会完成相应的动作;否则vi原创 2013-08-19 20:31:49 · 639 阅读 · 0 评论 -
[正整数划分]将正整数n表示一系列正整数之和
用python 实现之: #!/usr/bin/python# -*- coding: utf-8 -*-## 算法:求正整数n的所有可能和式组合, 并输出组合:## 思路:按照算法设计与分析上的:## q(n, m)= ## 1. m=1, n=1: 只有一种情况## 2. n## 3. n>m>1: q(n, m-1) + q(n-m, m)原创 2013-09-05 11:18:34 · 3180 阅读 · 0 评论 -
[背包问题] 01背包、完全背包、整数找零
01背包问题: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。完全背包: 完全背包定义是有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值是w。求解将哪些物品装入背包可使这些物品的体积总和不超过背包容量,且价值总和最大。原创 2013-09-05 16:00:22 · 753 阅读 · 0 评论 -
整数找零[求所有方案 及 最高效方案]
问题1: 将20元钱,换成1, 2, 5, 10元面额的人民币,共有多少种方案?问题2: 将20元钱,换成1, 2, 5, 10元面额的人民币,求最少使用多少张? 问题1: 解决方法: 递归遍历所有方案 或 参考整数划分。 令方案数为q(n): q(n) = q(n-1) +原创 2013-09-05 17:48:35 · 1463 阅读 · 0 评论 -
最长公共了序列、最长公共子串
1. 最长公共了序列( LCS )问题 用 lcs( i, j ) 表示 X[ 1...i ] 与 Y[ 1...j ] 的最长公共子序列长度。 则: lcs( i, j ) = 1) i == 0 or j == 0 : lcs(i, j) = 0. 2) 若 X[ i ] == Y[ j ] : lcs( i, j ) = lcs(原创 2013-09-16 23:41:38 · 656 阅读 · 0 评论 -
sizeof [字节对齐]
怎么判断内存对齐规则,sizeof的结果怎么来的,要牢记以下3条原则:(在没有#pragma pack宏的情况下,看最后一行)1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为原创 2013-09-17 00:41:28 · 632 阅读 · 0 评论 -
设计一种数据结构,使得取中位数的时间复杂度在 O(1)
设计一种数据结构,使得取中位数的时间复杂度在 O(1), 元素插入时间复杂度为log(n):1. 可以建造一棵二叉排序树, 保证 node_num( root->left )-node_num( root->right ) == 0 或 -1. 重点是保证二叉树的平衡 及 深度为log(n)。 此方法待验证.2. 可以考虑使用最大堆、最小堆: 中位数mid单独存原创 2013-09-18 16:26:07 · 3183 阅读 · 0 评论 -
求平行坐标轴的2矩形相交面积
求相交面积公式如下:矩形A : { TL, RB }a, typedef struct{x, y}TL, RB;矩形B: {TL, RB}bwidth = min(a.RB.x, b.RB.x) - max( a.TL.x, b.TL.x );if width 同理求出相交的高度。width = 右下 x 坐标最小值 - 左上x坐标的最大值原创 2013-09-19 02:21:52 · 1257 阅读 · 0 评论 -
C、C++、Java回顾
一. C:1. 函数调用调用约定:1) __stdcall: 1)参数从右向左压入堆栈,2)函数自身修改堆栈 3)返回值在EAX中, 函数名自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸。如 int __stdcall func( int a, int b ) , 被声明成: _func@8 。进行调用 func(a, ++b)时,相当于 ++b, func((a原创 2013-09-13 23:34:23 · 610 阅读 · 0 评论 -
后缀数组
参考:后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果:Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀然后就是怎么快原创 2013-09-09 20:16:29 · 542 阅读 · 0 评论 -
常见面试题合集
1. N对括号的所有合法排列题目:给定N对括号,输出其所有的合法的组合状态,例如,N=3,所有的合法状态为:"((()))”, “(()())”, “(())()”, “()(())”, “()()()”解法1, DFS: 在每个indx位置,分别进行扩展( 放入左括号 、 放入右括号),并且依据扩展的条件决定是否扩展。Python代码:#!/usr/bin/python#原创 2013-09-09 00:32:56 · 468 阅读 · 0 评论 -
分枝界限法
回溯法:求出解空间中满足约束条件的所有解。分支界限法:找出满足约束条件的一个解。搜索方式:回溯法使用深度优先的方式,而分支界限法使用广度优先或最小耗费的方式搜索解空间。1. 单源最短路径问题:问题描述:在有向图中,求出源顶点 s 到 目的顶点的最短路径。解决办法:使用优先队列式的分支界定法。算法描述: 1. 使用最小堆MinHeap来存储活结点列表原创 2013-09-07 16:46:05 · 1860 阅读 · 0 评论 -
算法
书籍:: 算法导论,算法艺术与信息学竞赛(黑书),王晓东算法设计, 组合数学,离散数学, 算法艺术与信息学竞赛 《国际大学生程序设计竞赛》共4本, 算法导论, 程序设计导引及在线实践 算法大致可以分为Dp,搜索,图论,计算几何,组合数学,数论等等。 做题的网站: USACO, 浙大,北大,原创 2010-05-18 23:11:00 · 445 阅读 · 0 评论 -
任务及方向
1. 游戏开发:Windows 及 Android 相关的图形学内容,物理知识,相关平台的学习。2. 嵌入式ARM OS, 电路,等等。3. 图像处理 模式识别,人工智能。原创 2011-11-30 12:45:37 · 364 阅读 · 0 评论 -
VC++ 6.0
VC++ 6.0实用技巧汇总 1.检测程序中的括号是否匹配把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 2:定位预处理指定,如何在源文件中定位光标到对称的#if, #endif ? 使用Ctrl+K快捷键。本文来自Yowsah资料库 3.格式化一段乱七八糟的源代码 选中那段源代码,按AT转载 2013-04-02 14:42:55 · 662 阅读 · 0 评论 -
The Top 10 research papers in computer science by Mendeley readership
Since we recently announced our $10001 Binary Battle to promote applications built on the Mendeley API (now including PLoS as well), I decided to take a look at the data to see what people have to wor转载 2013-04-02 14:38:15 · 967 阅读 · 0 评论 -
wamp 使用
A. 修改MySQL密码1.用root 进入mysql后mysql>set password =password('你的密码');mysql>flush privileges;2.使用GRANT语句 mysql>grant all on *.* to 'root'@'localhost' IDENTIFIED BY '你的密码'with grant option ;my原创 2013-05-16 20:09:26 · 547 阅读 · 0 评论 -
排列组合 A(n, m) 字典序
针对数字序列[1, 2, 3, 4, 5], 常见的排列组合情况有:1. 求n个数的全排列,要求各个排列升序.[1,2,3,4,5] ... [5,4,3,2,1]2. 求A(m, n),结果为升序. [1,2,3] .... [5,4,3]3. 求组合C(m, n), 结果为升序.[1,2,3] ... [3,4,5]4. 求{1, 2, 3, 4, 5, 6}的所有子集.原创 2013-08-24 00:40:56 · 1551 阅读 · 0 评论 -
[最长递增子序列]
问题定义:最长递增子序列又叫做最长上升子序列;子序列,正如LCS一样,元素不一定要求连续。本节讨论实现三种常见方法,主要是练手。题:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列1,-1,2,-3,4,-5,6,-7中,最长递增子序列长度为4,可以是1,2,4,6,也可以是-1,2,4,6。 方法一:DP像LCS一样,从后向前分析,很容易想到,包括第i个元素以及其原创 2013-09-06 00:26:58 · 1485 阅读 · 0 评论 -
KMP
串的模式匹配算法:Index( S, T, pos ) 1. 常规算法:顺序比较,遇到不匹配的情况则回退。python 代码:(注意回退时回退步长)#!/usr/bin/python# -*- coding: utf-8 -*-# 算法:KMP# 传统算法, 返回template在 source中第pos个字符之后的位置def Index( source, t原创 2013-09-06 22:01:02 · 598 阅读 · 0 评论 -
python 树形结构
1. 使用dictionary 实现二叉排序树python 代码:#!/usr/bin/python# -*- coding: utf-8 -*-# python 二叉树def create_btree( e ): root = {"v":e[0], "left":None, "right":None} for i in e[1:-1]: inser原创 2013-09-07 10:15:30 · 2863 阅读 · 0 评论 -
Python实现 [堆] [堆排序]
用python的堆及堆排序:堆调整的两个方面(以最小堆说明):1. 删除堆顶元素:(自顶向下) 删除堆顶元素时,把最后一个节点 last_indx 移到堆顶, 将此节点称作cur。 当此cur元素的两个子节点元素中最小者大于其,则将其子节点最小者k与cur交换,并将k作为新的cur。再将cur与其两个子节点进行比较。直到cur两个子节点都比cur小 或者 cur 为原创 2013-09-08 02:12:42 · 828 阅读 · 0 评论 -
Java内存模型
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来转载 2013-12-31 17:21:16 · 533 阅读 · 0 评论