自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 BZOJ 3757 苹果树

题意神犇家门口种了一棵苹果树。苹果树作为一棵树,当然是呈树状结构,每根树枝连接两个苹果,每个苹果都可以沿着一条由树枝构成的路径连到树根,而且这样的路径只存在一条。由于这棵苹果树是神犇种的,所以苹果都发生了变异,变成了各种各样的颜色。我们用一个到n之间的正整数来表示一种颜色。树上一共有n个苹果。每个苹果都被编了号码,号码为一个1到n之间的正整数。我们用0代表树根。只会有一个苹果直接根。有许许多多的人来

2017-02-26 19:23:39 453

原创 Codeforces 617E XOR and Favorite Number

题意给出n个数,m个询问和k,区间询问有多少个子区间的异或和等于k解首先求出异或前缀和,若[L,R]子区间[i,j]异或和为k,则val[i-1]^val[j]=k,所以可以转化为[L-1,R]中val[i]^val[j]=k,进一步转化即k^val[j]=val[i],现在考虑莫队算法,每增加一个元素,就相当与增加了c[val[j]^k]个子区间(c[x]表示当前查询区间内前缀异或和为x的个数),

2017-02-26 15:52:55 273

原创 HDU 3277 Marriage Match III

题意n个女孩n个男孩,每个女孩可以和一些男孩配对,此外还可以和k个任意的男孩配对,然后有些女孩是朋友,满足这个朋友圈里面的人,如果有一个能和某个男孩配对,其他就都可以,然后每轮要求每个女孩匹配到一个男孩,且每轮匹配到的都不同,问最多能匹配几轮解二分轮数,源向妹子连mid的边,妹子向满足条件的男孩连1的边,再连向一个点,容量为k,再连不满足的男孩连1的边,跑最大流,判断满流即可代码#include<c

2017-02-26 11:00:32 251

原创 HDU 2732 Leapin' Lizards

题意给你两个图,一个用0,1,2,3表示,一个用 L 或 . 表示。其中用L表示的图中,有L的位置表示有蜥蜴,没有L的位置表示没有蜥蜴。用数字表示的图中,数字表示当前位置柱子的高度,每次一个蜥蜴可以从一个柱子跳到距离d以内的另外一个柱子,每跳跃一次,当前柱子的高度就减一,问最后会有多少只蜥蜴被困在里面。解将柱子拆点,每个蜥蜴向其曼哈顿距离内点连边,跑最大流代码#include<cstdio>#in

2017-02-26 10:35:37 270

原创 Hdu 3572Task Schedule

题意:有M个机器,有N个任务。每个任务必须在Si 或者以后开始做,在Ei 或者之前完成,完成任务必须处理Pi 个时间单位。其中,每个任务可以在任意(空闲)机器上工作,每个机器的同一时刻只能工作一个任务,每个任务在同一时刻只能被一个机器工作,而且任务做到一半可以打断,拿去其他机器做。问:能否在规定时间内把任务做完。解源点与每个任务都连一条边,容量为要求的天数p,然后每个任务都与相应的时间点连边,边容量

2017-02-26 10:24:46 242

原创 HDU 1532Drainage Ditches

题意草地排水解网络流代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define For(i,j,k) for(int i=(j);i<=(int)k;i++)#define Forr(i,j,k) for(int i=(j);i>=(int)k;i--)#de

2017-02-26 10:14:34 230

原创 BZOJ 3932任务查询系统

题意最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分。超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行),其优先级为Pi。同一时间可能有多个任务同时执行,它们的优先级可能相同,也可能不同。调度系统会经常向查询系统询问,第Xi秒正在运行的任务中,优先级最小的Ki个任务(即将

2017-02-26 10:01:20 288

原创 BZOJ 2118墨墨的等式

题意墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N、{an}、以及B的取值范围,求出有多少B可以使等式存在非负整数解。解等式的和可以表示为B=a1*x1+B%a1,所以我们只要算出能够得到B%a1的最小的和就可以统计答案了,于是以B%a1为点向(B+ai)%a1建ai的边,跑最短路就行了。统计答案时ans=[(R-dis)-(

2017-02-26 09:16:13 375

原创 BZOJ 3781小B的询问

题意小B有一个序列,包含N个1~K之间的整数。他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数。小B请你帮助他回答询问。解裸莫队代码#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<

2017-02-26 08:53:57 300

原创 BZOJ 2038小z的袜子

题意:给一个序列,区间询问选两数相同的概率。解:莫队算法按 n√\sqrt n分块,询问先按左端点在块中位置,再按右端点位置排序,处理时每个询问间暴力转移,可以证明是O(nn√)O(n\sqrt n)的代码:#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<vector>#includ

2017-02-26 08:48:31 218

原创 SPOJ Count on a tree

题意:给一棵树和点权,查询链上第k大点权解:主席树每个点相对父亲的线段树再加一个点建立主席树,查询的数字出现情况即为t[u]+t[v]-t[lca]-t[fa[lca]]代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<queue>#define For(i,j,k) for(in

2017-02-16 23:31:27 260

原创 POJ2104 k-th number

题意:询问区间[L,R]间的第k大数解:主席树主席树的大致思路是先将所有值离散化到[1,n]然后对于每一个位置i建立一棵权值线段树维护位置[1,i]中的数字出现情况(例如:权值在[1,mid]范围内的数有x个)但是这样空间开销太大,所以我们考虑每一棵线段树每次建树时相对于前面只改变了logn个点,其他点均未改变,所以我们可以直接连上这些未改变的点,新建改变后的结点,这样,空间复杂度从n^2降为nlo

2017-02-16 23:01:27 158

原创 近期计划

LCT 3 - bzoj 2759 一个动态树好题 3 - bzoj 3153 sone1 3 - bzoj 3514 3- bzoj 1453 3 - 紫荆花之恋 3 - 共价大爷游长沙 主席树 1 - poj2104 1 - spoj cot 1 - spoj cot4 1 -spoj cot2 2 - zoj 2112 3 - hdu 4417

2017-02-14 13:00:05 485

原创 BZOJ 4025 二分图 LCT

维护关于删除时间的最大生成树 一个奇环的影响仅取决于环上删除时间最小的边 对于每个时刻 加入一条边时 若它为树边直接加 若形成环,则弹出删除时间最小的边,若同时为奇环,则将最小边加入集合,表示这条边存在时,图中总有奇环 (偶环不用加这条边,因为若之后加入的边与这条边形成了奇环,那么新边一定能与其他边构成奇环) 删去一条边时 若为树边直接删 若在集合中,在集合中删去 这样,在每一时

2017-02-12 21:48:40 220

原创 LCT小结

各种操作1.isrt(x) 判断x是否为当前辅助树的根 inline bool isrt(int x){ return R(F(x))!=x&&L(F(x))!=x; }2.pushup(x) 合并答案更新 //举例 inline void pushup(int i){ T[i].mx=max(T[L(i)].mx,T[R(i)].mx);

2017-02-12 21:43:15 660

原创 BZOJ2594: [Wc2006]水管局长数据加强版

题意动态维护最小生成树上最大边题解这题有点恶心,还要写一个hash因为最小生成树具有环切性质,所以LCT维护一下就可以了代码#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>#include<map>#define L(i) (T[i].s[0])#define

2017-02-12 10:24:20 319

原创 BZOJ3091: 城市旅行

题意维护树上两点路径上任意两点的距离的期望值题解搬运一波PoPoQQQ大神的博客 http://blog.csdn.net/popoqqq/article/details/40823659代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<iostream>#define F(i)

2017-02-12 10:11:53 227

原创 SPOJGSS7 Can you answer these queries VII

题意树上最大连续子段和题解维护前后缀和总的最大连续子段和 合并即可代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#define L(i) (T[i].s[0])#define R(i) (T[i].s[1])#define F(i) (T[i].fa)#define S(i) (T[i].

2017-02-12 10:00:35 253

原创 BZOJ2243 染色

题意:给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“ 112221 ” 由3段组成:“ 11 ” 、“ 222 ” 和“ 1 ” 。请你写一个程序依次完成这m个操作。题解LCT维护最左/右端点颜色合并即可代码#include<cstdio>#include<cstdlib>

2017-02-12 09:57:40 454

原创 BZOJ1095 捉迷藏

类似QTREE4LCT维护子树信息即可代码#include<bits/stdc++.h>#define For(i,j,k) for(int i=(j);i<=(int)k;i++)#define Forr(i,j,k) for(int i=(j);i>=(int)k;i--)#define Set(a,b) memset(a,b,sizeof(a))#define Rep(i,u) for

2017-02-12 09:49:15 400

原创 URAL1553 Caves and Tunnels

LCT模板题代码#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<iostream>#define L(i) (T[i].s[0])#define R(i) (T[i].s[1])#define F(i) (T[i].fa)#define Loc(i) (R(F(i))==i)

2017-02-12 09:46:05 219

原创 HDU4010 Query on The Trees LCT

LCT模板题代码#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<iostream>#include<cmath>#define L(i) (T[i].s[0])#define R(i) (T[i].s[1])#define F(i) (T[i].fa)#define V(i)

2017-02-12 09:44:00 201

原创 QTREE系列1,4,5,6,7 LCT

QTREE1题意:给出一棵N(N <= 10000)个点的树,要求支持: 1.改变第i条边的权值 2.求a->b上的最大边权解:直接树剖或LCT即可代码1.LCT(660ms)#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<iostream>#define L(i) (T[i].

2017-02-12 09:10:53 596

原创 BZOJ2049 LCT

换了一种新写法,感觉比之前好 主要注意define Rotate()别写错#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>#include<iostream>#define For(i,j,k) for(register int i=(j);i<=(int)k;i++

2016-12-17 17:41:31 289

原创 bzoj2002 LCT

LCT模板题#include#include#include#include#define For(i,j,k) for(register int i=(j);i<=(int)k;i++)#define Forr(i,j,k) for(register int i=(j);i>=(int)k;i--)#define L(i) (T[(i)].s[0])#define R(i) (

2016-12-17 10:42:57 318

原创 splay模板

#define fa(i) (T[i].p)#define L(i) (T[i].s[0])#define R(i) (T[i].s[1])#define Key (L(R(root)))#define Loc(i) (T[fa(i)].s[1]==i)#define Sets(a,b,c) {if(a)T[a].s[c]=b;if(b)fa(b)=a;}using namespace

2016-12-11 20:58:13 170

原创 Bzoj4016

Description给一个包含n个点,m条边的无向连通图。从顶点1出发,往其余所有点分别走一次并返回。往某一个点走时,选择总长度最短的路径走。若有多条长度最短的路径,则选择经过的顶点序列字典序最小的那条路径(如路径A为1,32,11,路径B为1,3,2,11,路径B字典序较小。注意是序列的字典序的最小,而非路径中节点编号相连的字符串字典序最小)。到达该点后按原路返回,然后往其他点

2016-12-11 10:47:46 323

原创 lca模板

一 tarjan算法#include#include#include#include#include#define For(i,j,k) for(register int i=(j);i<=(int)k;i++)#define Forr(i,j,k) for(register int i=(j);i>=(int)k;i--) #define Rep(i,u) for(regist

2016-12-11 10:30:45 272

原创 spoj375树链剖分模板

题意:    对于一颗树,两种操作(1)修改某边权(2)查询两点间最大边权解:树链剖分代码(200ms):#include#include#include#include#include#include#include#define For(i,j,k) for(register int i=(j);i<=(int)k;i++)#define Forr(i,j,k)

2016-12-04 10:36:19 281

原创 poj1741 点分治

题意:求一颗节点数为n(n解:考虑点分治        分情况讨论,过根节点的链直接dfs+扫一遍统计方案数,方案数计算方法为:将该树所有离根节点的距离存下来排序,然后统计个数,再减去在同一子树内的点对数。            不过根节点的链通过递归子树求出,重复上面步骤。            为了防止子树退化成链从而退化为O(n^2),所以我们对于每一颗子树求出其重心再进行计

2016-12-02 21:12:26 271

原创 poj 2761 Feed the dogs

题意:给出n(解:因为两两查询区间互不包含,所以按L从小到大排序,则必有Li      所以对于每一个查询,删除当前treap中当前查询不包含的点,插入当前treap中当前查询未插入的点      每个点删,插各一次,用treap实现,所以时间复杂度为O(nlogn)代码:#include#include#include#include#include#d

2016-08-14 21:41:53 369

原创 poj1292

注意:1.判断少了2.精度问题(g++编译器要注意)B - Will Indiana Jones Get There?Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64uSubmit StatusDescriptionIndia

2016-08-11 14:45:39 394 4

空空如也

空空如也

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

TA关注的人

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