摘要: 裸裸的哈弗曼编码,求出哈弗曼编码的路径长度,注意整个字符串为一种字符的情况View Code #include<iostream>#include<queue>#include<algorithm>#include<vector>using namespace std;struct node{ int u,w; node(int a=0,int b=0):u(a),w(b){} bool friend operator <(const node a,const node b)//重载操作符 { return a.w>b.w; }};i 阅读全文
posted @ 2012-02-15 23:05 枕边梦 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 题意:给你1~n个城市每个城市有一个球编号与城市编号相同,现在又两种操作1.T X Y 把x球所在城市的所有球转移到y球所在的城市。2.Q X 求出X球所在的城市编号 城市中球的总数 X球移动的次数思路:这题明显的并查集,很好的一道题,其关键在于如何记录球移动次数。当一个球从一个城市移到另一个城市之后,那么“之后”被转移的次数就等于他的直接父节点的转移次数,而经过一次路径压缩之后,实际上他已经被接到根节点后面了,值得注意的一点是,当前,如果一个点是根节点,那么他的转移次数一定是0。View Code #include<iostream>#include<algorithm&g 阅读全文
posted @ 2012-02-15 20:20 枕边梦 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题意:n*m的格子上有一些方块放在某些格子上,一个格子可能有几个方块,用'a'-'z'来表示方块数量。初始的时候可以选择任意空地作为Pusher初始点,Pusher选择一个方向,然后向这个方向前进直到遇到有方块的格子,Pusher把这个格子的方块清除一个,并把它向前推一格(向前不能出界),如果前面一格有方块,那么这些方合起来放在这个格子中。Pusher和有方块的格子之间至少要有一个空地才能推动分析:直接dfs,因为是special judge 找到一组解即可。View Code #include<iostream>#define N 30using 阅读全文
posted @ 2012-02-15 17:24 枕边梦 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 题意:对每一个提问,求出第K条线段所在集合的线段数。所以相交的线段属于同一个集合分析:几何+并查集View Code #include<iostream>#include<algorithm>#include<string>#include<math.h>#define MAXN 1000+10 using namespace std;struct Point{ double x,y;};struct seg{ Point a,b;}se[MAXN];int n,m,f[MAXN],r[MAXN];void init(){ for(int i=0 阅读全文
posted @ 2012-02-15 16:47 枕边梦 阅读(226) 评论(0) 推荐(0) 编辑