![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Emacs
Ignautics
practice makes perfect
展开
-
hdu6109 数据分割(并查集+set)
题目:hdu6109 思路:每输入一行合并一下,如何产生矛盾则说明该行为后为分隔符。 合并用并查集,同时还需要一个维护一个set来存储不等条件之间的关系。 利用两个数组flag 和flag2来作为并查集和set的“脏位”。 代码如下:#include <cstdio>#include <algorithm>#include <set>usin...原创 2018-07-21 13:59:07 · 218 阅读 · 0 评论 -
hdu 6110 路径交(线段树+lca)
题目:hdu 6110 路径交 分析:建好树之后dfs获得每个节点的深度,然后建立一颗线段树,每个节点维护一个路径,表示其左子节点维护的路径和右子节点维护的路径相交的路径(一棵树上两个节点相交只有一条路径),这里需要用到lca:即两个路径:a -> b, c -> d相交的路径为这四个节点(lca(a, c), lca(a, d), lca(b, c), lca(b, d))中深度较...原创 2018-07-27 15:15:34 · 382 阅读 · 0 评论 -
hdu 6111 迷宫出逃(状态压缩)
题目:hdu6111分析: 由于m*n只有64,所以想到状态压缩,其中一个状态rev的第((i-1)*m + j-1)表示(i, j)位置是否反转过,还有一个状态key表示该位置是否已经拿到钥匙 难点在于bfs判重,理论上状态至少有2^64个,但是实际上真正有用的状态却不是很多,用一个vector数组+hash来存储这些状态即可不超内存。 每次判断是否为出口且是否有钥匙,若有则退出。 ...原创 2018-07-27 15:36:36 · 240 阅读 · 0 评论