摘要:来源:HDU递推求解专题练习(For Beginner)2045: 令f(n)为n个方格的涂色方案数,易得f(1)=3,f(2)=6,f(3)=6。现考虑f(n+1)的情况,f(n+1)实际上是在n方格的涂法中再追加一格得出的,n方格的涂法可以分为两类:1) 合法的(即计入f(n)中的涂法),在此情况下,由于第1格与第n格不同,而第n+1格必须与第1格、第n格都不同,因此对于每种确定的n格涂法,第n+1格只有一个选择,因此该情况下的n+1格涂法数为f(n)2) 前n-1格合法(计入f(n-1)),第n格与第1格同色,此情况下,只要在第n+1格涂上与第1格不同的颜色(也必与第n格不同)即可构造合
阅读全文
摘要:最近把NYISTOJ(http://acm.nyist.net)第一版的题做完了,整理一下。由于有些题去年已经做掉了所以就没有再做,因此并没有包含1-100的所有题。本笔记部分参考《南阳理工学院OJ第1版解题报告V1.0》。文中涉及题目源码http://code.google.com/p/algorithm-mdyang//nyist下不够明白的待做的以下讲解不够详细之处请参照源码3:面积用三角划分计算,重心根据各三角形的重心和用面积加权求得5:暴力匹配,或使用string.h的find()函数(或std::string::find()),或将二进制串转化成整数比较,或任何其他串匹配算法(KM
阅读全文
摘要:Professor Hugo de Garis的简介:http://en.wikipedia.org/wiki/Hugo_de_GarisProfessor Hugo de Garis近期启动了一项免费在线课程计划,他计划在未来30年内在YouTube上上传至少100门免费课程,这项伟大的计划称为“deGarisMPC”,deGaris是Professor Hugo de Garis的姓,MPC则代表Math (Pure Mathmatics),Physics (Math Physics),Computer (Computer Theory)。Professor Hugo de Garis有感
阅读全文
摘要:本读书笔记的目录地址:http://www.cnblogs.com/mdyang/archive/2011/06/29/data-intensive-text-prcessing-with-mapreduce-contents.html因为最近工作比较忙,没有时间继续写这本书的读书笔记,所以本系列将会暂停一段时间。3.5 关系连接相关wiki:Join: http://en.wikipedia.org/wiki/Join_(SQL)Nested Loop Join: http://en.wikipedia.org/wiki/Nested_loop_join(译者:整个3.5都更像是数据库教程,
阅读全文
摘要:本文内容基于之前的一篇博文《Data-intensive Text Processing with MapReduce》读书笔记第3章:MapReduce算法设计(2):pair模式与stripe模式。这一节的末尾提出一个问题:stripe模式因为需要在mapper内维护一个关联数组,因此无法处理语料的词汇表非常大的情况。随后文章给出了一个解决思路:划分词汇表。但没有给出具体解决方法。本文针对这个思路,谈一谈如何通过划分词汇表的方式解决stripe模式存在的内存瓶颈。本文仅从抽象算法的层面对这个思路进行细化,不涉及具体的程序设计。因为条件所限,我目前尚无hadoop编程经验。空谈难免会有错误之
阅读全文
摘要:1 前言这篇读书笔记根据《集体智慧编程》第3章:聚类写成。本系列目录:http://www.cnblogs.com/mdyang/archive/2011/07/07/PCI-contents.html本文先对监督学习和无监督学习的概念进行简要介绍,引出聚类。然后给出聚类的一个经典问题:文档聚类的描述,并介绍构造特征向量和计算向量之间距离/相似度的方法。在此基础上给出使用两种基本聚类算法(层次聚类、K均值聚类)解决文档聚类问题的解法。2 监督学习与无监督学习简单地说,监督学习就是需要输入正确样例进行预训练的学习。预训练可以理解为告诉程序“怎么做”的过程。监督学习,例如神经网络、决策树、支持向量
阅读全文
摘要:前言本文是《Programming Collective Intelligence》的读书笔记目录。说实话,这本书的中文名着实让我纠结。乍看书名,我还以为是讲团队合作的呢。但如果不用这个书名,估计看到的人也不知道我说的是《Programming Collective Intelligence》这本书吧=_=真的翻开了书才发现都是一些实用的数据处理算法,涉及数据挖掘、人工智能/机器学习、搜索/ranking等多个领域的基础知识。本书为了突出实用性与易读性,避免了晦涩的形式化数学表述。涉及算法几乎全部来源于实例,且都用Python代码描述。对于希望快速上手上述领域算法设计的程序员是一本不可多得的好
阅读全文
摘要:本文是《Data-intensive Text Processing with MapReduce》一书(豆瓣链接)读书笔记博文列表。这是我的第一个读书笔记,其中翻译与表述不当之处,望广大网友不吝赐教。目前的状态:正在看书,边看边写,随着看书进度更新读书笔记。虽然进度上没有绝对保证,但将读书笔记以博文的方式发布出来,是对自己的督促。无论如何,我将认真研读并撰写报告。更新速度为3天左右一篇。读完以后,将持续修订。并考虑添加一些实践练习。书名中译(待定):使用MapReduce进行密集文本数据处理第1章:引言http://www.cnblogs.com/mdyang/archive/2011/06
阅读全文
摘要:题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=15思路:动态规划使用二维数组dp保存中间结果,其中dp[i][j]保存的是使得括号子序列s[i]s[i+1]...s[j]正确需补全的最少括号数(以下称之为N(i,j))。对于子序列长度为1的情况,即(,),[,]四种情况,显然有N=1. 即dp[i][i]=1.对于子序列长度为n的情况(s[i]s[i+1]...s[j], j-i+1=n),N(i,j)为集合S中的最小值。集合S的构造过程:0) 将S置为空集1) 若(s[i]='['且s[j]=']'
阅读全文
摘要:题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=7最直观的方法就是暴力求解。复杂度为O(I*J*N),其中I=[min(x),max(x)],J=[min(y),max(y)],N为住户数。更进一步地分析,如果给定住户(x1,y1),(x2,y2)...(xn,yn),若邮局位于(x,y),则距离和即为D=(|x1-x|+|y1-y|)+(|x2-x|+|y2-y|)+...+(|x3-x|+|y3-y|),问题转化为求D的最小值。不难看出将x和y方向的中位数作为邮局放置位置时D最大。只需将输入序列分别按x,y进行两次排序,取中位数即
阅读全文
摘要:题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=12昨天做了一道贪心算法题(见会场安排问题)。今天巩固一下。如上图所示,对于所有r>h/2的圆,圆周都会与上/下边界有2个交点,例如对于图中左边的圆,可以确定L1=x-√(r^2-(h/2)^2),R1=x+√(r^2-(h/2)^2),若L1<0,则L1=0;若R1>w,则R1=w.同样,对于右边的圆,则可以确定L2, R2.这样,对于所有给定的圆中满足r>h/2的,可以算出一个区间集合SI={[L1,R1], [L2,R2], [L3,R3]...[Ln,Rn
阅读全文
摘要:题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=14经典问题。此题的最佳解法是用贪心算法:1) 将所有输入活动按照结束时间从早到晚排序2) 顺序遍历列表,将可以加入日程的活动加入,并维护活动计数3) 遍历完毕后,输出活动计数整个过程需要1) 将活动列表排序O(nlogn) 2) 遍历列表O(n),因此复杂度为O(nlogn)#include <iostream>#include <vector>#include <utility>#include <algorithm>using nam
阅读全文
摘要:代码来源于:http://hi.baidu.com/daoyuanlee/blog/item/f5ccff07e58f69cf7a89473b.htmlO(n^2) 算法的思想基于动态规划:用数组a记录数字序列,数组b记录各a各个前缀子序列的最长严格递增子序列的长度(即b[i]记录的是a[0]...a[i]的最长严格递增子序列的长度)显然有b[0]=1,即a[0]的最长严格递增子序列长度显然为1在这个情况下进行增长,a[1]如果比a[0]大,那么b[1]就为b[0]+1=2. 否则b[1]仍然为1(即最长严格递增子序列为a[0]或a[1])继续增长至a[0],a[1],...a[i-1]的情况
阅读全文
摘要:描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入3[(])(])([[]()])样例输出NoNoYes模拟一个栈,每当左括号('['和'
阅读全文
摘要:原载新浪博客(2011-03-01)近日想要练习C/C++与算法,以应付找实习、工作的需要。向实验室的大牛师兄(ACM/ICPC牛人,就职微软)请教,得书一本:《程序设计导引及在线实践》副标题: 21世纪大学本科计算机专业系列教材作 者: 李文新出版社: 清华大学出版社出版年: 2007-11-01页数: 290定价: 26装帧: 平装ISBN: 9787302158332豆瓣链接:http://book.douban.com/subject/2300986/最后附上师兄写的简短评语: 首先说点题外话,我一直觉得大学内的程序设计课程与其布置学生在作业本上写程序,不如就用OnlineJudge(
阅读全文