zju1221Risk(Floyd)

        就是Floyd求最短路径

zju2833Friendship(带压缩路径的并查集)

        本题可用标准并查集解,但是因为数量huge,决定采用带压缩路径的并查集,忽然发现scanf和printf是要比cin和cout好得多,多次TLE之后得出的结论。

HDOJ1026Ignatius and the Princess I(bfs)

        bfs+记录路径。记录路径是可以通过记录此点的前驱,最后通过递归实现路径的输出。

HDOJ3347Calculate the expression(字符串处理)

        此题是对一些表达式进行求解,题目可能告诉一些变量的值,要求解出由这些变量组成的一个表达式的值

HDOJ1083Courses(匈牙利算法)

   正规的二分图匹配,用匈牙利算法实现。

HDOJ1272小希的迷宫(并查集)

   这里提到一点是”小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)“,这可以通过判断输入的二点是否在同一集合中实现,如果输入二点在同一集合中,说明有回路,也就不满足条件。第二是判断所有点是否在同一集合中,这可以通过并查集简单实现。

HDOJ1232畅通工程(纯正的并查集)

        有n个相互不连通的集合(相互连通的城市归为一个集合),就需要构建n-1条新道路。此题为典型的并查集。用第一种并查集实现。

HDOJ1811Rank of Tetris(并查集+拓扑排序)

        首先,因为会出现二个数相等情况,需要通过并查集合并为一个集合。如果不能进行拓扑排序将会出现“CONFLICT”这种情况,这也就等价为根本找不到入度为0的节点,或者为遍历完所有节点就出现找不到入度为0的节点了。还有就是一次找到多于1个的入度为0的节点,这就会出现“UNCERTAIN”这种情况了。对这二种情况分别考虑就可以了。

 

HDOJ1285确定比赛名次(拓扑排序)

        比较标准的一个拓扑排序,因为拓扑排序是不唯一的,此题给了一个限制条件(此时要求输出时编号小的队伍在前),从而使得此结果唯一。

        拓扑排序资料下载>>

 

valarray基本了解

 

valarray类似于向量vector,其主要用途是对一系列元素进行进行高速的数学计算
#include <iostream>
#include <valarray>
using namespace std;

int main()
{
        int i, n = 10;
        valarray<int> va1(n), va2(n);
       
        for(i = 0; i < n; i++)
        {
                va1[i] = i;
                va2[i] = -i;
        }