nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 线段树 /* http://acm.cug.edu.cn/problem.php?cid=1176&pid=1 */ // 区间赋值为0/1,区间的值取反 //线段树动态开点 // 区间翻转0/1+区间赋值0/1+区间求和的双标记动态开点线段树.html #define ml ((l+r)>>1) #define mr...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 吉司机线段树 hdu5306 #define ml ((l+r)>>1) #define mr (ml+1) #define ls (rt<<1) #define rs (ls|1) int...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 一维树状数组 笔者眼中的一维树状数组         一维树状数组,是一棵左偏树,他的每一个节点,维护的是一段区间的和,若该节点的 下标为i,那么他维护的区间就是(i&(i-1),i]...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 树链剖分 &nbsp &nbsp &nbsp &nbsp如果给出一棵树并为每个节点标号1234...n;并定义区间[x,y]为树上节点x到节点y的最短路所经过的所有节点组成的集合,注意是闭区间,包括x,y两个节点 &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 线段树 线段树         线段树是树状数组的强化版,它每次对区间进行二分,每一个深度都维护了整个区间,在同一深度里面,每个节点维护的区间长度大致相同,而每深入一层又大致比上一层多一倍的节点,故空间复杂度为Onlgn 节点信息 &...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 线段树套线段树 我的第一颗树套树 &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp 树套树的思路估计都这样子了,树套树分为外树和内树,也可以分为第一维树和 第二维树,我这里把他们叫做x树和y树,即x树为外树,y树为内树。我们描述时 用内外,代码用xy。 &nbsp&nbsp&nbsp&nb...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 转移自老blog 镜像并查集 镜像处理时都有这种关系 朋友的朋友是朋友,敌人的敌人是朋友,朋友的敌人是敌人,敌人的朋友是朋友, 如何快速判断朋友与敌人呢? 我们让每个人都有两重身份,一个是自己,一个是自己的相反面,即a与a'是天生的敌人,b与b'是天生的敌人 当a和b成为朋友的时候,我们让a'...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial dp的意义代码中写的很清楚,唯一要注意的是,有一个卡常的地方,显然对于n个点m条边取k个点的斯坦纳树,我们的dp有意义开到dp[1<<k][n]吗?...

nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial 用最少条数的路径覆盖树,这是一个树dp问题 1234567891011121314151617181920212223void dfs(int u,int father){ int sum=0; for(int i=head[u];~i;i=edge[i].nex){ if(edge[i].v==father) continue; dfs(edge[i].v,u);...