摘要:
这是割顶题中的极为基础的一道,就是用了《数据结构》中的关节点(P178),或者说是刘汝佳的《算法艺术与信息学竞赛》中的割顶(P285)。我的理解和解释,就是如果当前结点的某个子结点的祖先的最低遍历编号不小于当前结点的遍历编号(这个解释必须这么长,因为无论是哪本书,对此的解释都是差不多的),那么当前结点就是所要找的割顶,而且割的是之前提及的某个子结点与在当前结点前被遍历的祖先的联系。 这题可以直接套《数据结构》的FindArticul、DFSArticul函数,但是还要做的是思考怎样统计割顶的把整个图割成子连通分量的个数,因为题目要求求出割顶的同时,也要输出割顶把图分成多少部分。如果没有,... 阅读全文
摘要:
今天去华工赛被虐得是那个体无完肤,整个队伍5小时内开了4题,但是只出了2题。居然比我们学校的女队还差。因为昨晚的这道USACO的checker搞到我今天下午毫无精神,到了赛场就只想趴下睡觉。最终,在我开了一题看似可以做的字符串匹配题,经过我的深思熟虑,发现不能简单完成后,我就累趴了一个小时。 赛后,我们学校的大神告诉我,那题要RMQ和LCA什么的,听的我一头雾水,突然觉得离他们又遥远许多。比赛的时候,两个队友状态很一般,最大的水题(模拟扫雷标数)居然一个说不会扫雷,一个说不想看,最后搞到我睡醒后怒秒了那题!然后他们俩继续卡他们的暴搜题。A题暴搜题,在队友赛后的解释后,我终于明白那水的无语... 阅读全文
摘要:
http://poj.org/problem?id=3125 这道题没什么突出的地方,是一道很水的题,可以用list,也可以用queue来解决。(用list解决的代码我就不写了)把它写上来,只是因为我在使用STL的时候犯了一个小错误,从而导致我WA了数次。还是一个老问题,初始化。数组的使用需要初始化,STL的使用有时也要初始化。 还是直接贴代码吧……View Code 1 #include "cstdio" 2 #include "cstdlib" 3 #include "cstring" 4 #include "cmath 阅读全文
摘要:
http://poj.org/problem?id=2524 这不是一道难题,只是一个普通的,相当基础的MFSet问题。 这题的题解到处都有,所以我就只是大概说说做法:将编号按照关系分类,最后统计一共有子树。 我提供了两种代码,主要是为了说明STL消耗较多的内存和时间。下面的是用了set的,明显内存消耗更大: 下面是我的代码,只要调整STL的值就可以改变统计方法:View Code 1 #include "iostream" 2 #include "cstdio" 3 #include "cstdlib" 4 #include &qu 阅读全文
摘要:
http://poj.org/problem?id=2823 五一假期最大的收获不是学会了什么算法,而是学会了用STL(Standard Template Library)中的set, priority_queue, pair, map等的基本操作。 看到priority_queue的时候就让我想起单调队列,想起了poj 2823这题。于是,我就拿这题来做我的STL练习工具,写了一个用STL完成的单调队列。本地测试通过,理论上也是不会出错的,可惜的是,提交上去因为STL的处理方式以及题目的输出格式,使得我每个case的常数太大了,所以最终超时结束。 昨晚跟一位师兄讨论STL相关问题的时候... 阅读全文
摘要:
http://poj.org/problem?id=1088 这是一道dp入门题,不过我一直没想明白应该怎么dp。今天,在做自己学校oj的算法基础题时看到这题,标注着dp的分类,加上我一直都比较喜欢做dp题,于是我就决心今晚要把这道入门题切了。 题目是中文的,题目大意就免了吧…… 晚上做dp题的时候,我先是看见类似这题的一维单调增子序列,那题轻松AC了。但是,面对这个我隔了很长时间没想的二维dp题,我想了很久都想不到怎么dp。因为这题在我们学校的oj里是全部计算机专业都要知道怎么做的,所以题目下面有详细的解释,而且觉得那个题解是相当的浅显易懂。下面是那个解释:动规算法思路:f矩阵与原高度... 阅读全文
摘要:
今天,作为一个大一新生,我参加了在我们华农举办的2012GDCPC程序设计大赛。在这个有一百多支广东各院校的队伍参加的比赛中,虽然我和我的队友很幸运拿了个二等奖(听说这就是银牌),但是从今天省赛的情况可以看出,实力在我们之上的队伍可谓多不胜数,以后还有排努力啊! 用我那差得无语伦比的文笔总结回今天的比赛,其实就是几个词:好弱、好慢、多失误。 好弱,看见一大堆英文摆在面前,就算不停翻词典也看不懂题目,可以算是什么事都不知道就挂了。又或者看懂了题意,说出了是什么类型的题目,但是下一个蛋疼的事情又发生了……几个队友每次都是这个对白“XX(表示某种算法)喔~” “好似係……= =” “你识唔识... 阅读全文
摘要:
我最开始接触的相对高级的DP算法是从背包问题开始的。那是上学期新生赛的事,当时,在第二轮选拔赛中,有一道可能算是贪心算法的题,但是在我眼里却觉得这是一道背包问题。于是,我求助我们学校的大牛,问一下有什么关于背包算法的,而且比较容易让我弄懂的资料,最终他介绍我看《背包九讲》。 那时,甚至到现在,我只会基础的0-1背包,完全背包,多重背包的O(NClogC)算法…… 一直卡着我的是多重背包的O(NC)算法。这个是我从一一篇叫做《国家集训队2008论文集——浅谈几类背包问题》的文章中看到的。我到现在都无法理解单调队列优化多重背包的原理,但是在网上找到一些关于单调队列优化多重背包的代码。对我来... 阅读全文
摘要:
引用来源:NOCOW地图 - NOCOW高精度加法12345678910111213 + 1111111111111111111开两个数组存储:a[]={3,1,2,1,1,1,0,1,9,8,7,6,5,4,3,2,1};b[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};两个数组分别把数值倒存,在一位一位的加,每位加后判断是否大于10,在进位(注:如果太大的数值,可以考虑4位一存哦.) 注意下面的a1,b1,c1 为 数组的长度View Code 1 if a1>b1 then 2 c1:=a1 3 else 4 c1:=b1; 5 for... 阅读全文
摘要:
http://poj.org/problem?id=2983 最短路专题中的一道用到Bellman-Ford算法的题。 先简单描述题目的意思: 两个王国将开展一场星级战争,其中一个国家的防御系统被出卖,但是其中的信息有真有假。现在给出某些防御塔间的位置关系,判断是否有矛盾,有矛盾就是不可信,否则就是可信。其中有些是知道具体的相对位置,其余的知知道大概的相对方向,而且各个防御塔都是在南北向的一条直线上。 根据题意,就可以知道这是要判断是否有矛盾的信息,换句话说就是要判断是否有负权的回路。其中,较为简单而且经典的方法就是Bellman Ford的算法。 根据《算法导论》描述: 这个算法... 阅读全文