不要太把学习当回事

还在上学的时候,每学一个新东西都要调研很久,比如说要学习新语言了,就会上各大论坛,搜各种社区的资料,比如对c++和java有兴趣,就会搜“我想学习新语言,c++和java哪个有前途?”,等考察了好长时间,终于决定了学习c++,就开始纠结着另外一个问题,“我想学习c++,是《c++编程思想》好还是《c++程序设计语言》好?”,最终决定了哪一本,开始看,一字一句不漏。耗费了很长时间在选择上,好像学习编程是一件轰轰烈烈的事情,等我一字一句弄懂书上的每一个细节,我就可以成为跟作者水平一样的高手。

其实大可不必,没必要把学习某个东西当成太大的事,精心调研精心准备,找一本书就可以动手了,你用来犹豫的时间完全可以完成某个技术的入门。就比如说你想做移动开发,不必纠结是android好还是iOS好,直接动手搭建开发环境,跑一个HelloWorld出来,看看他们各自的开发流程都是什么样子的,随便翻看一本相关的书籍,了解进阶时需要学习的东西。这样有感性的体验和对学习成本的估量之后,选择自然而然就有了。看的越重,走的越慢。

继续阅读 →

POJ 1149 PIGS (建图搞死人= =)

POJ 1149 PIGS

以前刚开始看网络流的时候,下载过一个文档,《网络流建模汇总 by Edelweiss》,里面第一个模型就是这个题,当时看了好长时间,没看懂= =b,这两天重新看过之后,思路清晰了许多。网络流难的不是dinic,sap呀什么的,是建图,搞死人呢。。。

经过一番搜题解之后,我发现最详细的解释出自这里,凑活着看吧,上面的文档中也有(不过我打印出来是黑白的,图示不清)。
(更多…)

继续阅读 →

ZOJ 1994 Budget (staus 1st,happy~)

ZOJ 1994 Budget

这个题同时也还是POJ上的2396,经典的有上下界的可行流,我的模板已经经过好几个网络流题目的考验了,这道题排到zoj的第一版,实在是激动啊。刚开始我还想着是对于矩阵中的每一个格子都建立一个点,但是看过别人的建图,发现这个可以省略成行到列的弧。把每个行看成一个点,每个列也看成一个点,行到列的弧就可以看成是对应格子的流量。源点S到行点的弧容量上下界都是行的和(题目中给出),列点到汇T的容量同样是列的和,T到S再建立[0,inf]的弧,那么就可以用无源汇的可行流解决了。。

(更多…)

继续阅读 →

SGU 242 Student’s Morning (有上下界的可行流)

SGU 242 Student’s Morning

学生要去学校游玩,每个学生有几个喜欢的学校,要求每个学校至少有两个人,我们可以这样建图,从学校到学生建立[0,1]的弧,从学生到汇点T,建立[0,1]的弧,对于每个学校从源点建立下界为2的弧,从T到S建立[0,2*K]的路,这样就可以用模板了。今天晚上来到实验室,完全手写的代码,竟然一次AC了,十分高兴,而且代码也些的很工整,用作网络流的模板啦~

(更多…)

继续阅读 →

HDU 3599 War (dinic + dijkstra +heap )

HDU 3599 War

类似于zoj2760 how many shortest paths,需要求出有多少个互不相交的最短路条数,需要求出最短路,然后让满足d[to]  == d[from] + w[from][to] 的两个点间连接一条弧,容量为1,然后再S,T之间求最大流即可,本题难度 不大,就是出数据的人该遭鄙视,边的顶点竟然有为0的,害得我搞了好长时间,求最短路的时候可以用spfa和dij+heap,速度差不多,哎,好久么有写最短路了,我这个代码写了好几遍,我感觉已经写的非常规范了,可以当做模板用。。。

(更多…)

继续阅读 →

ZOJ 3195 Design the city (lca + st )

ZOJ 3195 Design the city

给出n个区域,有n-1条路去连接这些区域,显然他是一个带权无根树。首先把它以0为根看成有根树,对于给出的三个点,每两个点之间的距离是固定的,因为他们之间只有一条路,但是对于这么多查询(at most 70000 ),直接找距离代价太大,找出每两个点的LCA,这样就可以两个点之间的距离了,(需要知道从0点开始到这两个点的距离)。 我们把这三对点的距离加起来再除以2,就能得到连接着三个点的最短路径。

(更多…)

继续阅读 →