自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BZOJ1715: [Usaco2006 Dec]Wormholes 虫洞 spfa 求负环

此题的题意就是求图中有没有负环存在 Spfa求负环方法:当一个点已经被松弛了超过n次,则这个图存在着负环 建图的话注意:把虫洞的边的权值为数据给的权值的相反数,其它的都正常 因为题中有多组数据所以一定要记得很多数组需要清空 用spfa求负环即可。 #include #include #include #include #include #include using namespace

2016-07-31 17:54:07 784

原创 BZOJ1497: [NOI2006]最大获利

什么是最大权闭合子图: 先解释一下有向图的闭合图:闭合图内任意点的任意后继也一定还在闭合图中。 物理意义:事物间依赖关系:一个事件要发生,它需要的所有前提也都一定要发生。 最大权闭合图:点权之和最大的闭合图 最大权闭合图构图方法: 1.增加源s汇t  2.源s连接原图的正权点,容量为相应点权 3.原图的负权点连接汇t,容量为相应点权的相反数 4.原图边的容量为正无限. 

2016-07-30 22:42:14 435

原创 BZOJ2243: [SDOI2011]染色 树链剖分

写长程序真闹心。。改了好久 线段树需要存储区间颜色段数,左端点和右端点的颜色。 线段树要注意合并的问题 1.线段树查询跨区间的时候,要注意如果左边子区间的右端点与右边子区间的左端点颜色相同时,颜色段数等于左右区间相加后-1。 2.在树链上也要注意轻链和重链交界处的颜色是否相同,如果颜色相同,颜色段数等于两段链上颜色段数相加后-1 (具体写法参照代码) 因为c的可以等于0,所以标记的原始

2016-07-30 14:12:09 372

原创 BZOJ2330: [SCOI2011]糖果 差分约束+spfa

差分约束:把给出的所有约束条件改成形如a-b>=x的形式 x=1:d[a]==d[b],有 d[a]-d[b]>=0, d[b]-d[a]>=0 x=2:d[a]=1 x=3:d[a]>=d[b],有 d[a]-d[b]>=0 x=4:d[a]>d[b],有 d[a]-d[b]>=1 x=5:d[a]=0 依照这个建边就可以了。 刚开始把所有点都放进队列里,dis的初始值要都设成1(

2016-07-29 16:16:36 471

原创 BZOJ1202: [HNOI2005]狡猾的商人 并查集

用并查集维护类似前缀和的东西,用v[x]表示从x到连通块根的价值 如果两个点已经在一个集合里说明它们之间的价值已经求出来了,比如点对(x,y)已经在一个集合里,只需要判断v[y]-v[x]?=z;若不在一个集合里,将x,y合并 设p=find(x),q=find(y); v[y]=s[y]-s[q],v[x]=s[x]-s[p];z=s[y]-s[x];  得出v[p]=v[y]-v[x]-z

2016-07-29 12:16:07 1381

原创 BZOJ2431: [HAOI2009]逆序对数列 DP

f[i][j]表示1~i组成的排列中,产生j个逆序对的方案数。 当新插入元素i时,可以新构成0~i-1个逆序对。 故f[i][j]=f[i-1][j-0]+f[i-1][j-1]+...+f[i-1][j-i+1],时间复杂度o(n^2k) 用维护前缀和优化一下,时间复杂度为o(n*k) #include #include #include #include #include using

2016-07-29 09:46:01 394

原创 BZOJ1015: [JSOI2008]星球大战starwar 并查集 离线处理

题目大意: 给出一些点和一些边,每次删掉一个点和其连接的边 求每次删除一个点后图中的连通块个数 可以倒过来做并查集,时间复杂度o(n)。 先按照输入建好一个虚拟的图 再把最后存在的星球之间的边连起来用并查集求出连通块个数 然后按照被攻击星球的逆序不断向图里加入点和边(加入的边的to[i]一定是图中存在的点),每一次用并查集更新连通块个数 按照顺序输出答案 #include

2016-07-28 22:47:33 488

原创 BZOJ1798:[Ahoi2009]Seq 维护序列 线段树

题目大意:维护一个序列,支持3种操作 1.区间上每一个点的值乘一个数 2.区间上每一个点的值加一个数 3.查询一段区间的数值之和 线段树裸题 注意:传乘法标记的时候,初始值要设成1 #include #include #include #include #include using namespace std; #define ll long long const int N=

2016-07-27 17:09:01 853

空空如也

空空如也

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

TA关注的人

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