摘要: 题目:http://ac.jobdu.com/problem.php?cid=1045&pid=0题目描述:在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最大是指元素1的个数最多。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行是两个整数m、n(1int m, n;int x[1002][1002];int upperbound[1002][1002];//pre处理后,x[i][j]表示原矩阵第i行中x[i][j]前面有多少个连续的1void pre() { for (int i = 0; i 0) { ... 阅读全文
posted @ 2013-05-19 23:00 ttang 阅读(9169) 评论(3) 推荐(1) 编辑
摘要: 答案是:不会被更新,失效了,参见wiki:If a symbolic link is deleted, its target remains unaffected. If a symbolic link points to a target, and sometime later that target is moved, renamed or deleted, the symbolic link is not automatically updated or deleted, but continues to exist and still points to the old target, 阅读全文
posted @ 2013-05-19 00:48 ttang 阅读(373) 评论(0) 推荐(0) 编辑
摘要: http://www.boost.org/doc/libs/1_53_0/more/getting_started/unix-variants.html 看官方安装指南自然是最正确的选择 先sudo apt-get install python-dev,再sudo apt-get install libbz2-dev,如果不做这一步,就会在安装时候得到“patchlevel.h:没有那个文件或目录”,“bzlib.h:没有那个文件或目录”这样的错误信息。(如果你已经安装并得到了这样的信息,也可以补救:执行完这两个安装命令后,再执行./b2 install,就会更新之前失败或跳过的那些文件。.. 阅读全文
posted @ 2013-05-19 00:33 ttang 阅读(4007) 评论(0) 推荐(0) 编辑
摘要: 真是很笨出于某种原因,用了1.6,明明应该用最新版1.8的,估计慢的原因就是这个eclipse Version: 4.2.2 阅读全文
posted @ 2013-05-17 17:07 ttang 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 本文抽一些书中提到的、个人认为比较重要的原则或者方法,列举如下:1、对方法和变量名选择专业的词,避免tmp(除非真的是暂时变量,比如交换两个数时作为中间变量)和retval(return value),用有意义的名字2、用first, last表示闭区间[first, last];用begin, end表示左闭右开区间[begin, end);区分calcXXX和getXXX,calc意味着包含计算,而get通常是表示不包含计算,立刻得到3、写注释,可以是描述函数行为,也可以是提醒注意的事项,如适用范围等等4、简化控制流(if else, do while等等)5、减少变量的引入,缩小变量作用 阅读全文
posted @ 2013-05-16 21:17 ttang 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 有本书上提到,Λ比较像A,表示And,另一个V就是or了,记住这个就不会混乱了。作者还提到V是来自拉丁文Vel,表示or.在《人工智能——一种现代方法》第三版,7.4.1 阅读全文
posted @ 2013-05-13 16:17 ttang 阅读(377) 评论(0) 推荐(1) 编辑
摘要: N皇后问题就不再叙述了,Google一下就知道了(这里我们讨论找出一个或几个解,不讨论找出全部解的方法)N皇后有一个解法是回溯法,这个可以解决,但是效率不是很高。(不过这个方法可以找出所有解)结合随机方法会更快:随机初始化一部分皇后,使得她们互不冲突,然后再用回溯法,这通常快得多。不过这个方法不能找到所有解,也不能保证一次找到解——如果第一次随机化找不到解,就要再次随机化+回溯。本文讲一个从人工智能的角度解决该问题的算法——最小冲突算法,这个算法在《人工智能——一种现代方法》(第二版)第五章中出现简单地说,就是:(1)初始化N个皇后的一个放置,允许有冲突(2)考虑某一行的某个皇后,她可能与x个 阅读全文
posted @ 2013-05-12 01:18 ttang 阅读(7328) 评论(7) 推荐(0) 编辑
摘要: 编码问题http://edyfox.codecarver.org/html/vim_fileencodings_detection.html 阅读全文
posted @ 2013-05-11 22:20 ttang 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 答案是yessrand改变了全局变量,所以在任何地方调用一次都会影响后续的rand返回值C标准给了一个sample implementation,如下(http://stackoverflow.com/questions/4768180/rand-implementation,http://stackoverflow.com/questions/7343833/srand-why-call-only-once)static unsigned long int next = 1;int rand(void) // RAND_MAX assumed to be 32767{ next = n... 阅读全文
posted @ 2013-05-11 16:14 ttang 阅读(1664) 评论(1) 推荐(0) 编辑
摘要: http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor还是英文搜索靠谱,查“ST算法”,没人告诉我这是个什么东西,有的只是贴代码,怎么用。查“ST algorithm”,一下就找到了。顺便说一下,在我看来,那些纯贴代码的ACM博客几乎毫无信息量。最重要的应该是思路、推理过程、数学证明或结论。 阅读全文
posted @ 2013-05-09 10:14 ttang 阅读(2080) 评论(0) 推荐(0) 编辑
摘要: 下面是一个我想到的证明,但是感觉应该有更简洁的证明方法,如果你知道,欢迎留言。1 阅读全文
posted @ 2013-05-07 00:04 ttang 阅读(1631) 评论(2) 推荐(2) 编辑
摘要: http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=binaryIndexedTrees翻译版:http://hawstein.com/posts/binary-indexed-trees.html#readcf这篇文章给出了poj上的例题http://duanple.blog.163.com/blog/static/7097176720081131113145832/需求:希望有一个数组a,可以快速计算连续的一段元素的和,如a[i]+a[i+1]+...+a[j],普通的数组对这种查询的时间是和j-i成 阅读全文
posted @ 2013-04-20 21:17 ttang 阅读(170) 评论(0) 推荐(0) 编辑
摘要: const double *cptr;//cptr 是一个指向constdouble 的指针,我们可以重新赋值cptr 使其指向不同的对象但不能修改cptr 指向的对象任何试图将一个非const 对象的指针指向一个常量对象的动作都将引起编译错误对传入某函数的const vector<>&类型,既不可以改变vector中的元素,也不可以对x做赋值(如果不加const,两者都可以),如下例:void f(const vector<int>& x){ //x.clear();//err //x.push_back(2);//err //x[0] = 5;//e 阅读全文
posted @ 2013-04-20 13:21 ttang 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 我希望要一个ArrayList<Entry>,类似C++中的pair,但是Map.Entry是个接口,不能实例化,可以像下面这样写HashMap<Integer, Integer> G = new HashMap<Integer,Integer>();G.put(1, 9); G.put(4, 6); G.put(2, 8);G.put(3, 7); ArrayList<Map.Entry<Integer, Integer>> arrayList = new ArrayList<Map.Entry<Integer, Int 阅读全文
posted @ 2013-04-20 11:27 ttang 阅读(11187) 评论(1) 推荐(0) 编辑
摘要: 简单地说,在keyset方法返回的set上做修改会改变原来的hashmap,这也许不是你想要的,于是形成一个隐藏的bug一个简单的例子//a simple demoimport java.util.HashMap;import java.util.Set;public class TestHashMap { public static void main(String[] args) { HashMap<Integer, Integer> G = new HashMap<Integer,Integer>(); G.put(1, 1); G.put(2, 4);... 阅读全文
posted @ 2013-04-17 20:45 ttang 阅读(3630) 评论(0) 推荐(0) 编辑
摘要: 需求是:我希望为“g++-static-libgcc -static-libstdc++”设置别名"g++",这样就不必每次都输入这个很长的option了(至于这个需求的产生,看这里)另外,如果ls能够完成dir的功能,也不错本文主要取自http://superuser.com/questions/49170/create-an-alias-in-windows-xp,我只是在其中给出的若干种中选了一种简单、易行、可靠的方法,我的系统是win7--32位1、创建一个bat文件,内容如下doskey g++=g++ -static-libgcc -static-libstdc 阅读全文
posted @ 2013-04-06 10:20 ttang 阅读(19000) 评论(2) 推荐(4) 编辑
摘要: 今天写了一个C++程序,按照以往的习惯编译,Windows报“XXX.exe已停止工作”,gdb单步执行的时候,在一条声明语句处出现了下面的信息:Program received signal SIGSEGV, Segmentation fault.0x6fc89edc in libstdc++-6!_ZNSsC1Ev () from d:\Program Files\gnuplot\bin\libstdc++-6.dll原来是编译时链接的dll和运行时的dll不是同一个,这个地方应该是mingw下的c++库,结果却变成了gnuplot下的库了解决办法:(1)用静态链接,g++用选项-st.. 阅读全文
posted @ 2013-04-06 09:17 ttang 阅读(925) 评论(0) 推荐(0) 编辑
摘要: 来源于contains方法,因为它接受object作为参数,太宽松了,以至于不小心写错后,eclipse都无法提供错误提示,而且这种错误不会有异常,运行时也不会因错误而中断,是纯粹语义上的错误,这种错误在我看来是最可怕的。 讲一下我的这个错误。 我有一个HashSet<Integer> A;用来记录那些曾经被插入队列的节点(Vertex),对于一个新来的节点,如果不在A中,就插入队列。后来我发现这个队列无限制增长,折腾很久发现原因是这样的:while(!queue.isEmpty()){ if(A.contains(node)){ continue; } if(... 阅读全文
posted @ 2013-04-04 00:03 ttang 阅读(21261) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1065 这个题目定义了一种偏序关系≤ (L1, W1)≤(L2, W2)当且仅当L1<=L2且W1<=W2 给的输入就是一个偏序集,目标就是把这个偏序集划分为一系列chain,并要求chain的个数尽可能少 根据Dilworth定理,最少的chain个数等于最大的antichain的大小(相关内容参考我的上一篇博文) 如何求最大的antichain的大小呢?可以首先考虑antichain具有的性质:(1)对antichain中任意两点P(L1, W1)和Q(L2, W2),L1不等于L2(否则P和Q就是可比较的,违反反链性质), 阅读全文
posted @ 2013-03-31 05:12 ttang 阅读(2399) 评论(0) 推荐(1) 编辑
摘要: 偏序集:We define a Partially Ordered Set, or a Poset, as a set P witha partial ordering  defined on it’s elements. I.e, for any twoelements x and y of P, either x ≤ y, y≤x (x and y are comparable),or x || y (x and y are incomparable).链(chain)是一个偏序集S的全序子集(所谓全序是指任意两个元素可比较)反链(antichain)是一个偏序集S的子集,其中任意两个 阅读全文
posted @ 2013-03-31 02:43 ttang 阅读(5125) 评论(0) 推荐(1) 编辑
摘要: 默认安装的IDLE和ActivePython都没有easy_install然后看到有人说Setuptools itself doesn't work on Python 3. But you can use Distribute, a fork and a drop in replacement for setuptools(http://stackoverflow.com/questions/7558518/will-setuptools-work-with-python-3-2-x)然后在(https://pypi.python.org/pypi/distribute)找到下面这段 阅读全文
posted @ 2013-03-29 10:35 ttang 阅读(1097) 评论(0) 推荐(0) 编辑
摘要: 主页:http://www.csie.ntu.edu.tw/~cjlin/libsvm/这是台湾大学林智仁开发的一个软件,很好很强大对于初学者来说,SVM应该是机器学习里相对比较难以实现的一个算法,不像决策树、朴素贝叶斯,KNN,感知机等相对容易实现,我觉得主要是SVM有个解二次规划的部分,这个要学数值优化或者运筹学才会讲到。然后老师介绍了这个软件包,回来按照主页上的A practical guide to support vector classification里的实例试了一下,挺简单的里面还有个svm-toy,可以自己选点,让它来分类,很好玩 阅读全文
posted @ 2013-03-20 15:16 ttang 阅读(1802) 评论(2) 推荐(0) 编辑
摘要: 最近发现Windows的cmd可以不必那么丑。打开cmd(可以win+R输入cmd,也可以用launchy),在上方标题栏右键——属性——字体,我这里有Consolas和Lucida Console可选(不过我印象中我的笔记本只有新宋体和和console两种字体,这个好像是安装git的结果,不太确定,不过新宋体也比默认的console字体漂亮),然后颜色也可以改,比如背景灰色,屏幕文字黑色,大概是下面的样子下面再讲讲vim的配置,如果你在Windows上安装了gvim,则也有一个console模式下可以使用的vim,但是这个vim默认背景和gvim不同,导致配色很刺眼或者看不见,原因是终端.. 阅读全文
posted @ 2013-03-20 14:56 ttang 阅读(13531) 评论(3) 推荐(3) 编辑
摘要: 三名传教士和三个野蛮人同在一个小河渡口,渡口上只有一条可容两人的小船。问题的目标是要用这条小船把这六个人全部渡到对岸去,条件是在渡河的过程中,河两岸随时都保持传教士人数不少于野蛮人的人数,否则野蛮人会把处于少数的传教士吃掉。这六个人怎样才能安全渡过去?状态集合为(x,y,b)三元组,x表示左岸野人数,y表示左岸传教士数,x,y取值0~3。b为0表示船在左边,b为1表示船在右边动作集合为一个传教士从左到右,两个传教士从左到右,一个野人从左到右,两个野人从左到右,一个野人一个传教士从左到右;从右到左类似也有5个动作,共10个动作,于是就可以画出一个状态转换图,下面的python代码可以帮助我们完成 阅读全文
posted @ 2013-03-19 00:05 ttang 阅读(5745) 评论(1) 推荐(1) 编辑
摘要: 要使assert起作用,要有-ea选项,对eclipse,可以这样设置http://www.vogella.com/blog/2009/02/06/enabling-java-assertions-per-default-in-eclipse-runtime-configuration/一个简单测试public class TestAssert { public static void main(String[] args) { assert false; System.out.println("test"); }}输出:Exception in thr... 阅读全文
posted @ 2013-03-02 10:58 ttang 阅读(1587) 评论(0) 推荐(0) 编辑
摘要: 刚刚注意到原来notepad++有很多插件,像spell checker,compare,explorer都挺有用的,打开插件——plugin manager——show plugin manager 还有很多很fancy的插件,如speech——读文件,不过磕磕绊绊;multiclipboard——多个粘贴板;snippets——快速键入常用短语、代码等;subversion,Tortoise... 阅读全文
posted @ 2013-02-26 23:27 ttang 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 一个递归算法 bool isbalance(字符串s,未匹配的左括号数unmatched, 当前要考察的字符位置idx) (1)考察字符串s从idx开始到末尾的子字符串,若为空或只包含一个字符,讨论可得,是边界情况 (2)否则,考察子字符串前两个字符,即s[idx]和s[idx+1],如果是笑脸或哭脸,考虑两种可能性,解释为表情或左右括号,记录未匹配的左括号数;若为其他字符,相应考虑unma... 阅读全文
posted @ 2013-02-26 22:52 ttang 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 本篇讨论判定一个long long类型的整数是否为完全平方数。long long类型的判定比较困难,因为(1)long long转换为double会损失精度,其实这个似乎不是大问题,因为转换成long double似乎就不会损失精度了(C语言没有明确规定long double的格式,在大多数实现中是IEEE754 extended format,80 bits,有64位有效数字)(2)对于较大的k,long double能否区分k^2和k^2+1的平方根,这决定着我们能否通过“判定一个数的平方根是否为整数”来判定这个数是不是完全平方数。long long i = 3037000499ll;// 阅读全文
posted @ 2013-02-01 17:24 ttang 阅读(1278) 评论(0) 推荐(0) 编辑
摘要: 第一个判定完全平方数函数:bool judge(int m){ double x = sqrt(m); if (floor(x) == x) { return true; } return false;}经过测试,表明这个函数对每个int范围内的正整数都能给出正确的判断当m是完全平方数时,m的算术平方根可以用double精确表示(因为是整数),所以不会产生精度损失,floor(x)==x成立当m不是完全平方数时,就要靠测试了,看看对于较大的k,double类型能否区分k2的平方根和k2+1的平方根,测试证明,k2在int范围内时,可以。第二个判定完全平方数... 阅读全文
posted @ 2013-02-01 17:24 ttang 阅读(2603) 评论(0) 推荐(0) 编辑
摘要: 本部分介绍相关背景知识1、C语言的char, short, int, long, long long类型都是由C自身规定的,但是float, double, long double都是没有规定的(unspecified),但大多数平台上的实现遵从IEEE754标准(参见http://en.wikipedia.org/wiki/C_data_types)(C99标准似乎规定了float对应IEC60559 single format,double对应IEC60559 double format,long double推荐实现为IEC60559extended format,参见C99标准文档44 阅读全文
posted @ 2013-02-01 17:23 ttang 阅读(610) 评论(0) 推荐(0) 编辑