自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huantwofat

自己都改变不了,如何改变世界。

  • 博客(14)
  • 收藏
  • 关注

原创 hdu5286 wyh2000 and sequence 分块处理

#include #include #include #include #include #include #include using namespace std; const int maxn=51005; const int mod=1000000007; struct pi{ int sum; int lson; int rson; }pp[maxn*17]; in

2015-07-19 13:43:47 706

原创 poj 3782 LCA+树链剖分

题意很简单,我们很容易求得两个点的LCA,至于求完之后呢,我们用树链剖分来维护这个值,线段树里的元素有元素最大值,元素最小值,正向答案(后面的减前面的最大值)以及逆向答案,注意,树链剖分转移时一定要记录两个区间段之间最大最小值之差。具体的方案可以参考代码。 #include #include #include #include #define maxn 100005 using namespac

2015-07-11 17:36:02 540 1

原创 poj 2749 Building roads 2-SAT

同样我们二分距离,我们可以这样考虑,对每个仓库a用a表示到第一个结合点连边,非a到第二个转接点连边,接下来我们对于相互恨的和相互喜欢的可以直接加边,对于约束条件,我们暴力每两个仓库,判断这两个仓库分别连在两个转接点时是否可行,用2-SAT作为判断条件。 #include #include #include #include #include #include #define maxn 10105

2015-07-11 17:32:19 380

原创 poj 2723 Get Luffy Out 2-SAT

因为过一个门之后才能到下一个门,所以我们直接二分门数,对于每对钥匙a、b,a&b=0,所以a到n+b加边,b到n+a加边。而对于每个门对于的钥匙a、b两个必须存在一个,所以n+a到b,b+n到a加边即可。 #include #include #include #include #include #define maxn 4505 using namespace std; int low[maxn

2015-07-11 17:28:56 382

原创 poj 3678 Katu Puzzle 2-SAT

模板2-SAT,至于and之后是1以及or之后是0的情况,如果a&b=1,那么a=1且b=1,a=1则可以用非a到a连一条边即可。 #include #include #include #include #define maxn 100005 using namespace std; int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],head1[

2015-07-11 17:26:36 361

原创 poj 3180 The Cow Prom 强连通分量

直接求分量里元素大于1的分量个数即可。 #include #include #include #include #include #define maxn 11005 using namespace std; int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],c[maxn],mark[maxn]; bool map[maxn][maxn]; ve

2015-07-11 17:24:54 405

原创 poj 2763 Housewife Wind 树链剖分+LCA

对于每组询问,我们直接用logn的复杂度求出两个点的LCA,至于修改边以及查询长度则是树链剖分模板题。 #include #include #include #include #include #define maxn 100005 using namespace std; int top[maxn],fa[maxn],son[maxn],size[maxn],id[maxn],num,dep[

2015-07-11 17:22:42 368

原创 poj 3683 Priest John's Busiest Day 2-SAT

建议读者先了解一下2-SAT,可以通过挑战程序设计竞赛那本书。 这道题就是两种情况,我们可以用a表示从开始进行,非a表示从结尾进行,这样我们暴力每两个活动,分别考虑这连个活动在开始或者结尾举行时是否能够同时存在,然后直接加边即可。 #include #include #include #include #include #define maxn 2105 using namespace std

2015-07-11 17:18:36 327

原创 poj 2186 Popular Cows 缩点

用强连通分量缩点之后,看一看出度为0的点有多少个,如果大于1个就输出0,否则输出这个点(连通分量里点的个数)。 #include #include #include #include #include #define maxn 11005 using namespace std; int low[maxn],dnf[maxn],que[maxn],tear,head[maxn],c[maxn],

2015-07-11 17:15:36 398

原创 codeforce 86D Powerful array 莫对算法

简单莫队算法题,对于她给的公式来说怎么,每一次转移区间的是候用一个数组来位数每个数值的数的个数即可。 #include #include #include #include #include using namespace std; const int maxn=200005; typedef long long LL; int a[1000006],b[maxn]; struct pi{

2015-07-08 20:08:12 451

原创 bzoj3289 Mato的文件管理 莫队算法

我们可以想到交换的次数就是逆序数,所以我们用莫对算法维护区间,维护则用树状数组来维护,所以总复杂度是O(nsqrt(n)log(n)); #include #include #include #include #include using namespace std; const int maxn=50005; int bit[maxn]; int a[maxn],b[maxn]; ty

2015-07-08 20:04:36 423

原创 bzoj 2038 [2009国家集训队]小Z的袜子 莫队算法

莫队算法的经典题,在一个区间内,维护一定颜色的袜子的数量即可,复杂度:O(nsqrt(n)); #include #include #include #include #include using namespace std; const int maxn=50005; int bit[maxn]; int a[maxn],b[maxn]; typedef long long LL; LL s1

2015-07-08 20:02:07 355

原创 hdu3113 Lucky 莫队算法

定义记号f(A,B)表示询问区间A,B时的答案 用记号+表示集合的并 利用莫队算法我们可以计算出任意f(A,A)的值 不妨假设A=[l1,r1],B=[l2,r2],C=[r1+1,l2−1] 容易知道f(A,B)=f(A+B+C,A+B+C)+f(C,C)−f(A+C,A+C)−f(C+B,C+B) 因此一个询问被拆成四个可以用莫队算法做的询问 直接把上述四个询问拆开即可。 #include

2015-07-08 19:59:03 352

原创 莫队算法

莫队算法指的是:对于要询问的区间,把1~n分成sqrt(n)块,把每个区间的左端点按其所在的块编号排序,而右端点按大小排序,这样总复杂度是sqrt(n)的

2015-07-08 19:57:56 553

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除