上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页
摘要: GSS7Can you answerthese queries VII给出一棵树,树的节点有权值,有两种操作:1.询问节点x,y的路径上最大子段和,可以为空2.把节点x,y的路径上所有节点的权值置为c分析:修改树路径的信息,可以考虑一下树链剖分、动态树。这题可以用树链剖分的方式来做,不会的可以看看这篇树链剖分---模板。其实树链剖分不难理解,一小时左右就能学会了。对于在一段区间的最大子段和问题,可以参考GSS1 spoj 1043 Can you answer these queries I 最大子段和由于x,y可能不在同一个重链上,所以在询问时需要分两段进行统计,合并的时候跟GSS1基本一样 阅读全文
posted @ 2013-08-28 11:30 yejinru 阅读(525) 评论(0) 推荐(0) 编辑
摘要: GSS6Can you answer these queries VI给出一个数列,有以下四种操作:I x y: 在位置x插入y。D x : 删除位置x上的元素。R x y: 把位置x用y取替。Q x y: 输出区间[x,y]的最大字段和。分析:其实这题是BZOJ 1500 [NOI2005]维修数列这题的简化版。使用splay来做非常简单。我的做法增加一个虚拟节点在数列的最开始处,增加两个虚拟节点在最后,这是为了方便在数列最后插入的操作。splay网上的资料比较多,其实splay比sbt、avl都简单。这里有我的一份总结,并且有一些资料:splay总结囧,我写的splay太慢了,最后上网搜了 阅读全文
posted @ 2013-08-28 09:31 yejinru 阅读(354) 评论(0) 推荐(0) 编辑
摘要: gss5Can you answer these queries V给出数列a1...an,询问时给出:Query(x1,y1,x2,y2) = Max { A[i]+A[i+1]+...+A[j] ; x1 =x2: 考虑x1与x2的关系: 如果x1==x2,最大值可能出现在区间[x1,y1]的最大子段和,[x1,y1]的右区间连续最大和加上[y1+1,y2]的左区间连续最大和。 否则,考虑三个区间[x1,x2-1],[x2,y1],[y1+1,y2],这时考虑方式跟上面差不多,就不写出来了,具体可以看代码。#include #include #include #incl... 阅读全文
posted @ 2013-08-27 21:44 yejinru 阅读(330) 评论(0) 推荐(0) 编辑
摘要: gss2调了一下午,至今还在wa。。。我的做法是:对于询问按右区间排序,利用splay记录最右的位置。对于重复出现的,在splay中删掉之前出现的位置所在的节点,然后在splay中插入新的节点。对于没有出现过的,直接插入。询问时直接统计区间的最大子段和。gss2没能调出bug,所以看了一下以下的gss3,发现跟gss1基本一样。直接上代码以上的做法是错的,对于这种数据就过不了。姿势不对,囧44 -2 3 -211 4GSSCan you answer these queries III题目:给出一个数列,有两种操作:0.把第x项变为y1.询问区间[l,r]的最大子段和分析:线段树简单区间操作。 阅读全文
posted @ 2013-08-27 20:03 yejinru 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 今天下午不知道要做什么,那就把gss系列的线段树刷一下吧。Can you answer these queries I题目:给出一个数列,询问区间[l,r]的最大子段和分析: 线段树简单区间操作。 线段树中记录lx,rx,mx,分别表示:最大前驱连续和,最大后继连续和,区间最大子段和。 在合并时时只需要合并两个区间即可,具体可以看代码的Union。 从队友jingo那里学到了这种合并的写法,发现比网上大部分代码简单很多。#include #include #include #include #include #include #include #include #include #includ 阅读全文
posted @ 2013-08-27 15:07 yejinru 阅读(305) 评论(3) 推荐(0) 编辑
摘要: 开了个小号做,C题一开始看错范围,D题看了半小时才看懂,居然也升到了div1,囧。C - Xenia and Weights给出一串字符串,第i位如果是1的话,表示有重量为i的砝码,如果有该种砝码的话,数量有无限多个。现在往天平的两侧放入,每次放入的要求:1.每次放入时和上次放入的砝码的重量不能一样。2.放入的那端天平必须必另一端重。问能否放入n次,能的话,求放入方式。分析: 比赛时看到很多人写的是贪心,但是想不到有什么好的数据叉掉他们,囧。 我写的是直接dfs爆搜。代码略吧。D - Xenia and Bit Operations这题挺有意思的。只不过比赛时纠结了半个小时的题意,看懂了之.. 阅读全文
posted @ 2013-08-27 02:03 yejinru 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一个图,从图中找出两条最短路,使得边不重复。分析:既然是最短路,那么,两条路径上的所有节点的入边(s,x)、出边(x,e)必定是最优的,即 dis[x] = dis[s]+edge_dis,dis[e] = dis[x]+edge_dis。 dis表示点x到节点1的最短路的距离。 所以建图时,先求一边最短路,根据最短路上的前驱(可能有多个)与该节点构成新图,对于新图求一遍最大流判断最大流是否大于等于2即可。 /*题目:给出一个图,从图中找出两条最短路,使得边不重复。分析:先求一遍最短路,最短路上的点可以构成一个新图,对于新图求一遍最大流,如果存在大于1的最大流,则有解。*/#... 阅读全文
posted @ 2013-08-26 13:39 yejinru 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 208E - Blood Cousins题目:给出一棵树,问与节点v的第k个祖先相同的节点数有多少个。分析: 寻找节点v的第k个祖先,这不就是qtree2简化版吗,但是怎么统计该祖先拥有多少个深度为k的儿子? 我们可以对于深度为d的所有节点放到一个数组中,这时需要知道的是深度为d的数组中某个连续区间都属于该子树的长度。 某棵子树的信息?这时可以考虑一下dfs序列。。。 dfs序列把整棵子树放在同一个区间,不懂dfs序的可以做做这两题: BZOJ 1103 [POI2007]大都市meg,BZOJ 1782 [Usaco2010 Feb]slowdown 慢慢游。 于是,我们df... 阅读全文
posted @ 2013-08-26 11:33 yejinru 阅读(599) 评论(0) 推荐(0) 编辑
摘要: QTREE2经典的倍增思想题目:给出一棵树,求:1.两点之间距离。2.从节点x到节点y最短路径上第k个节点的编号。分析: 第一问的话,随便以一个节点为根,求得其他节点到根的距离,然后对于每个询问(x,y),想求得lca(x,y),直接用dis[x]+dis[y]-2*dis[ lca(x,y) ]即可。 第二问的话,可以用倍增的方式求。我们通过求得节点x,y,lca(x,y)的深度,判断第k个节点落在哪个链上,该链是指是从x到根或者从y到根。最后倍增可以轻松求出一个链上第k个父亲是谁了。 我实现的时候,lca以及求某个节点的第k个祖先都是用倍增的思想实现。#include #incl... 阅读全文
posted @ 2013-08-25 21:17 yejinru 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 1146: [CTSC2008]网络管理NetworkTime Limit:50 SecMemory Limit:162 MBSubmit:870Solved:299[Submit][Status]DescriptionM公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门。为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络。该网络的结构由N个路由器和N-1条高速光缆组成。每个部门都有一个专属的路由器,部门局域网内的所有机器都联向这个路由器,然后再通过这个通信子网与其他部门进行通信联络。该网络结构保证网络中的任意两个路由器之间都存在一条直接或间接路 阅读全文
posted @ 2013-08-25 12:58 yejinru 阅读(496) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 30 下一页