2013年3月12日

编程之美读书笔记-快速寻找满足条件的两个数

摘要: 2.12 快速寻找满足条件的两个数Level:Description:能否快速找出一个数组的两个数字,让这两个数字之和等于一个给定的值sum,假设数组至少一组符合要求的解。Solution:首先,O(N2)的解法是一个很直接的想法,但是这确实不是很优美。此外,书上的解法二是对于数组的每个数字arr[i]都去查找sum-arr[i]是否存在,所以这也就变成了查找算法,而查找我们会马想到一些比较优美的查找算法,比如我们可以先排序,然后进行二分查找,这样遍历O(N),排序复杂度O(NlogN),二分查找O(logN),大概的复杂度在O(NlogN),可以很好的解决这个问题,至于查找,也可以用hash 阅读全文

posted @ 2013-03-12 16:10 algoCG 阅读(549) 评论(0) 推荐(0) 编辑

2012年11月9日

Windows API 学习-SetProcessWorkingSetSize函数

摘要: SetProcessWorkingSetSize,从这个函数的名字上中文翻译来看,设置进程工作集。这里提到了一个名词,工作集。工作集可以如下定义:一个进程当前正在占用的页面的集合就是它的工作集。页面是虚拟地址按照固定大小划分成的若干单元,页面地址经过映射,得到实际的物理地址,但是,不是所有虚拟地址页面都对应着物理地址,我们可以把一些很久没有使用的内存中的数据写到外存,当使用时,进行缺页中断,再写入内存。现在回到这个API,而这个API干的事情就是使系统回收进程当前没有的使用的内存,并把数据写到外存。MSDN上,函数定义如下:BOOL WINAPI SetProcessWorkingSetSiz 阅读全文

posted @ 2012-11-09 11:49 algoCG 阅读(949) 评论(0) 推荐(0) 编辑

2012年10月18日

Chase the excellence, success will follow you.

摘要: 保持本心,眼界放宽,做好每一件事,每天有所收获。 阅读全文

posted @ 2012-10-18 14:49 algoCG 阅读(591) 评论(0) 推荐(0) 编辑

2012年9月27日

Windows8 App Blog Collector隐私保护声明

摘要: 我们收集的信息:IP地址每台连接到互联网的计算机都指定了唯一的编号,称为互联网协议 (IP) 地址。由于这些编号通常都是根据国家/地区的区域指定的,因此 IP 地址通常可用于识别计算机连接至互联网时所在的国家/地区。我们如何使用收集到的信息:IP地址本应用数据来自您所添加的Rss源的URL,在获得您授权后,应用会匿名地向这些网址请求数据,此时需要发送您的IP地址至这些网址,以实现数据传输。本应用不会保存或向除您所添加网址以外的任何网站发送您的IP地址。感谢您的使用。 阅读全文

posted @ 2012-09-27 23:44 algoCG 阅读(1278) 评论(0) 推荐(0) 编辑

2012年4月23日

hdu 4034 Graph解题报告-Floyd思想

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4034题目描述:给你一个n*n矩阵来表示一个图,矩阵的每个元素gij都表示i点到j点的最短路,其中对角线元素总是0。问满足这个矩阵的图的最少边数是多少,若不存在,则输出impossible。显然,边数最多的情况是每两点之间都有最短的直边相连,边数最多为n2-n,在每两点都有最短直边相连情况下,我们以一一删去多余的边,最后就是最终结果。 考虑:若gij = gik+ gkj ,i 与 j的这条边可以删去,因为i到j的最短路gij可以由gik+gkj转移来;若gij> gik + gkj ,则说明 阅读全文

posted @ 2012-04-23 09:42 algoCG 阅读(339) 评论(0) 推荐(0) 编辑

2012年4月17日

poj 2288 Islands and Bridges解题报告-状态压缩dp

摘要: 题目链接:http://poj.org/problem?id=2288题目描述:哈密尔顿路问题。n个点,每一个点有权值,设哈密尔顿路为C1C2...Cn,Ci的权值为Vi,一条哈密尔顿路的值分为三部分计算:1.每一个点的权值之和2.对于图中的每一条CiCi+1,加上Vi*Vi+13.对于路径中的连续三个点:CiCi+1Ci+2,若在图中,三点构成三角形,则要加上Vi*Vi+1*Vi+2求一条汉密尔顿路可以获得的最大值,并且还要输出有多少条这样的哈密尔顿路。这道题的状态感觉不是很难想,因为根据一般的哈密尔顿路问题,首先想到的是设计二维状态,dp[i , s]表示当前在i点,走过的点形成状态集合s 阅读全文

posted @ 2012-04-17 20:09 algoCG 阅读(763) 评论(0) 推荐(0) 编辑

2012年4月16日

poj 2441Arrange the Bulls解题报告-状态压缩dp

摘要: 题目链接:http://poj.org/problem?id=2441题目描述:有n头牛, m个仓库,每头牛有它喜欢的仓库,每个仓库最多只能安排一头牛,问有多少种安排方法。这道题目应该算是状态压缩dp的简单题目。如果之前没有接触过状态压缩dp,或者没有很好的理解的状态压缩dp,可以看看这两篇论文:论文1, 论文2。这两篇论文自我感觉都写的很好,尤其是论文2里讲解的那三道题,很不错。求解:1> 设计状态:dp[i , j]表示前i头牛形成状态集合j的方法数。2> 状态转移:dp[i , j] = sum{dp[i-1 , j-(1<<k)]},其中k表示第i头牛可以放在仓 阅读全文

posted @ 2012-04-16 23:19 algoCG 阅读(517) 评论(0) 推荐(0) 编辑

四边形不等式相关

摘要: 四边形不等式,即:w[i , j] + w[i' , j'] <= w[i , j'] + w[i' , j], 其中 i <= i' <= j' <= j;看了几篇关于四边形不等式,虽然不是很深的去研究四边形不等式的相关证明,但却发现可以总结出一些类似于公式的东西,总结如下:顺便推荐两篇论文: 《四边形不等式》, 《动态规划算法优化技巧》我是这么总结的:1> 状态转移方程形如:f[i] = opt{f[j]+w[j , i]} 其中b[i] <= j <= i-1(说明:b[i]是根据题目描述的可以决策 阅读全文

posted @ 2012-04-16 16:44 algoCG 阅读(323) 评论(0) 推荐(0) 编辑

2012年4月2日

poj 1325Machine Schedule解题报告-最小顶点覆盖等于最大匹配数

摘要: 题目链接:http://poj.org/problem?id=1325题目描述:2台机器A和B,分别有n,m种工作状态,k个工作,可以在A机器x状态下工作,也可以在B机器y状态下工作。问最少切换多少次机器状态可以完成所有工作。解题思路:把A机器下的工作状态看作点集X,B机器下的每个工作状态看作点集Y,每个任务i看做一条连接状态a[x]和b[y]的边,问题转化为求解最少的点覆盖(关联)每一条边。此问题也是最小顶点覆盖问题,并且有一个定理,估计大家也很熟悉:König定理:二分图中的最大匹配数等于这个图中的最小顶点覆盖数。设二分图的最大匹配数为M,证明如下:(来自黑书)1) M个是足够的 阅读全文

posted @ 2012-04-02 17:27 algoCG 阅读(404) 评论(0) 推荐(0) 编辑

2012年3月31日

hdu 2243考研路茫茫——单词情结—解题报告

摘要: 算法:AC自动机的理解,Trie图的应用。我的理解:Trie图是建立在AC自动机基础上的,前者比后者有更多的应用。对于AC自动机的理解, 请参考这篇大牛推荐论文,http://www.cs.uku.fi/~kilpelai/BSA05/lectures/slides04.pdf,虽然是英文的,读了一个下午后,确实觉得讲的很明白; 对Trie的理解,请参考王贇的论文http://wenku.baidu.com/view/9df73e3567ec102de2bd89ae.html,写的很好。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2243题目描 阅读全文

posted @ 2012-03-31 23:03 algoCG 阅读(282) 评论(0) 推荐(0) 编辑

导航