今天木有比赛,算是认真的做了题目。嗯,掌握之前讲的东西而已。
上午专注的搞了下堆。做了poj2051。
详细的话,,等我集训结束去整理。代码就先不贴了。。
上午给老队员讲题,,当然…完全没有讲题本身的意义,,讲了个poj1703,并查集,,然后打算什么时候写下poj1182,差不多的,然后研究下按秩压缩。
然后是上午讲了图的内容,比较多内容,一下难以接受。(概念之类的是接受的,现在在读代码,然后后期会自己实现一下。)
图的概念
Graph Theory
有向图,带权图
图的表示,1.邻接矩阵,2.邻接表(方便BFS)
最小生成树-Prim算法
取图中任意一个顶点 v 作为生成树的根,之后往生成树上添加新的顶点 w。在添加的顶点 w 和已经在生成树上的顶点v 之间必定存在一条边,并且该边的权值在所有连通顶点 v 和 w 之间的边中取值最小。之后继续往生成树上添加顶点,直至生成树上含有全部顶点为止。
-kruskal算法
集合T表示已经表示已经选择的边,每次在E-T
中选择权值最小的边,添加到T,且满足T不产生
回路。当T的大小为V-1时算法终止。
单源最短路径
-Dijkstra 算法
设源点为 v0,w(u, v)表示边( u, v )的权值
当u,v之间没有边,w( u, v ) = inf
L :表示当前从源点到各个结点的最短路径
S :已求得最短路径的结点集合
(1)L( v0 ) = 0, S = 空集
(2)选取最小的L(u),令S = S + { u };对所有v 属于V – S,令L(v) = min(L(v), L(u) + w(u,v))重复(2)直至所有点的最短路径被求出
每对顶点间的最路距离
-Floyd 算法
for( k = 0; k < n; k++ )
for( i = 0 ; i < n; i++ )
for( j = 0; j < n; j++ )
if( dist[ i ][ j ] > dist[ i ][ k ] + dist[ k ][ j ] )
dist[ i ][ j ] = dist[ i ][ k ] + dist[ k ][ j ];
当然,还有很多关于图的基本操作,比如说判断是否成环等等的。需要慢慢研读,这东西不是一下子的事情。加油,fighting~
1094、1270、2367
1258、2421、2485、1679、1751、2075、
1502、1797、1847、2139、2607、 1125、2240、1161、1556、1603、2263、2502、3268
http://hi.baidu.com/zfy0701/blog/item/b8332b5c7b2dd545fbf2c052.html
恩,今天就这些,,明天要安排组队了。希望不和奇葩在一起