- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 poj2528 离散化+线段树区间更新
就是看区间内有多少张不同的海报,唯一的问题是墙太长,需要离散化一下海报的宽度;最好的理解方式就是阅读代码:#include#include#include#include#include#define maxn 500010using namespace std;int _set[maxn*2];bool vis[11000];int fin_ans;void
2016-04-28 17:58:21 2183
原创 浙江省赛zoj3946 Highway Project
Highway ProjectTime Limit: 2 Seconds Memory Limit: 65536 KB Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can reach other cities from
2016-04-25 20:59:03 2843
原创 C++ pair的比较大小
std::pair 是可以比较大小的有这样的全局函数template<class _Ty1, class _Ty2> inline bool operator& _Left, const pair& _Right) { // test if _Left < _Right for pairs return (_Left.first < _Right.first || !(
2016-04-13 21:36:33 17439 2
原创 tarjan算法
须知概念:Dfs搜索树,回边,交叉边(无向图的dfs树不存在交叉边);dfn[u] :u的dfs序low[u] :从u或u的子孙出发,通过回边可以到达的最小的dfs序 对于Tarjan算法中,我们得到了dfn和low两个数组,low[u]:=min(low[u],dfn[v])——(u,v)为回边,v不是u的子树;low[u]:=min(low[u],low[v])——
2016-04-13 21:21:51 3234
原创 poj3352 Road Construction 缩点
有时根据问题的需要,要把边双连通分量抽象为一个点,这就叫缩点。 缩点的根据也是low值;同一边双连通分量的点,low值相同,因为对于该边双连通分量dfs树上的根节点u和其子孙节点v,它们之间除了有一条dfs树边组成的路径之外,肯定还有一条包含回边的路径,所以每个点v都能通过一条非dfs树上的路径到达u点,即所有的low[v]=u; 经过缩点后的无向图是一棵树(树的每一条边都是割边)
2016-04-13 21:15:17 2410 1
原创 poj1523 求割点割边
求割点点u是割点的充分条件:1. 如果u是dfs树的根,则u至少有两个子女。2. 如果u不是dfs树的根,则它至少有一个子女w,从w出发,不可能通过和w、w的子孙相连的回边到达u的祖先。 u是割点的充要条件是:u或则是具有两个以上子女的深度优先生成树的根,或则虽然不是根,但它有一个子女w,使得low[w]>=dfn[u]。 求割边有两种判断方法:1. 当点u的子
2016-04-13 21:10:18 2656
原创 poj1061 poj2115 扩展欧几里德算法
以下内容为个人理解,有错误地方还请指出。1、gcd和扩展gcd算法都要求a,b大于0;2、ax+by=c有解的充要条件是c%gcd(a,b)==0;3、求解ax+by=c 转换为求解a*_x+b*_y=gcd(a,b); x=_x*c/gcd(a,b); y=_y*c/gcd(a,b); 4、如果ax+by=gcd(a,b)中b 但是算出的y要加负号才是正确结
2016-04-13 20:54:04 2315
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人