• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
AC_Artist.zig_zag
然而我依然在补题、
博客园    首页    新随笔    联系   管理    订阅  订阅
上一页 1 ··· 4 5 6 7 8 9 下一页
2013年3月28日
bzoj 1269 editor
摘要: 这个题和维修数列一比就简单了许多,只要把所谓的光标处理好就OK 了,就是字符串处理的时候比较麻烦,需要多调试一下。这个题不用回收空间了,不过插入的时候还是要递归建树再插入,这样可以防止树的深度过大导致不平衡使得splay效率变差。editor 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #define maxn 2400000 7 #define inf 2147483646 阅读全文
posted @ 2013-03-28 22:42 Zig_zag 阅读(176) 评论(0) 推荐(0)
bzoj 1500 维修数列
摘要: Splay的BOSS级别的题目,几乎包含了所有区间维护的操作,对于想要提高代码熟练度的人来说这个题非常值得一写。首先我们要维护的域是:size,sum,la(左max),ra(右max),ma(整体max)更新的时候用这些域更新就行,注意下传的时候也要更新响应域值。对于那些恶心操作,我就挨个说一下吧:注:标准结构:区间右端点+1(R)为根,区间左端点-1(L)为根的左儿子,这样目标区间就是L的右儿子,这种形式以后都用"标准结构"代替。插入操作:先把需要插入的序列建成一个小平衡树(递归),转出标准结构,插到L的右儿子上就行了。删除操作:转出标准结构,把L的右儿子切下来就行了( 阅读全文
posted @ 2013-03-28 19:36 Zig_zag 阅读(1344) 评论(1) 推荐(2)
bzoj 1208 宠物收养所
摘要: 这个题也是单点维护,不管来的是人还是狗,只要num=0就插入,否则就删除,想清楚了就很好写。Pets 1 const 2 maxn=100000; 3 ms=1000000; 4 var 5 c:array[0..maxn,0..1]of longint; 6 size,fa,key:array[0..maxn]of longint; 7 i,n,a,b,tot,sum,num,now,ans,tmp,rot:longint; 8 procedure update(x:longint); 9 begin 10 size[x]:=... 阅读全文
posted @ 2013-03-28 19:19 Zig_zag 阅读(241) 评论(0) 推荐(0)
bzoj 1503 郁闷的出纳员
摘要: Splay练手题,真正做起来不那么简单,虽然是简单的单点维护,但是删除的时候会比较恶心(吐槽一下,我就是因为一上来用这个题splay练手,调了半天没调出来,气死我了)。友情提示:刚进公司就被开的不算在最后的答案里(这公司真冷酷......)Teller 1 const 2 maxn=300000; 3 var 4 c:array[0..maxn,0..1]of longint; 5 fa,size,key:array[0..maxn]of longint; 6 n,i,a,limit,now,num,tot,sum,rot,tmp:longint; 7 sign:char; 8... 阅读全文
posted @ 2013-03-28 19:17 Zig_zag 阅读(285) 评论(0) 推荐(0)
2013年3月26日
bzoj 1093 最大半连通子图
摘要: 这个题一定要把题意弄清楚,然后就是发现可以缩点搞,缩点了以后这个最大半连通子图就是一条最长的单向链。然后用类似树型dp的方法(这里是BFS更新答案),可以把答案求出来。注意缩点以后可能会有重边(参考proverbs大神的博客)如果用DFS更新dp的话,不好判断重边。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #define maxn 120000 7 #de 阅读全文
posted @ 2013-03-26 18:33 Zig_zag 阅读(355) 评论(0) 推荐(0)
bzoj 1202 狡猾的商人
摘要: 这个题一开始以为是线性规划,但实际上是类似用并查集维护连通信息的题目。我们先给t+1,这样[s,t]的区间就可以连起来了,那么只要来了一组[s,t]曾经连通过,并且维护的区间值和原来不一样,那么一定是假的。那么怎么维护区间值呢,我们合并的时候,把t的父亲连到s的父亲上,在t的父亲上存一个t的父亲到s的父亲的区间值也就是:g[ft]=g[s]+z-g[t];路径压缩的时候,同时更新g的值,这里注意一个细节:先路径压缩,在用g[f[i]]更新g[i]值,我在这里一直WA。View Code 1 #include<iostream> 2 #include<cstdio> 3 阅读全文
posted @ 2013-03-26 18:27 Zig_zag 阅读(237) 评论(0) 推荐(0)
2013年3月20日
bzoj 1797 mincut
摘要: 有点偏向结论性质的题。最小割是把图分成S和T两个互不联通的部分,切割的总容量的小小值。论文里说过,在最小割里的边一定是满流边但漫流边不一定是最小割里的边。有了这两个性质,我们可以这么想,如果这个边的两端同在S或T里的话一定不成立。于是,我们在残量图里跑tarjan,一定可以得到被切割后的几个联通块,如果两个点在同一个联通分量里,那么这条边一定不是最小割边。如果这条边分别联通S,T这两个联通分量,并且满流的话,那么这条一定是最小割的边。解释的不是很清楚,总之最重要的是对最小割的理解。mincut 1 #include<iostream> 2 #include<cstdio> 阅读全文
posted @ 2013-03-20 20:35 Zig_zag 阅读(285) 评论(0) 推荐(0)
2013年3月19日
bzoj 2330 糖果
摘要: 恶心死我了,调试了3个小时,居然是图连错了,一直在搞第5个点的TLE,原因大概是跑最长路的时候建了st点,然后那个点貌似是个大环,然后就无限第跑个不停......一晚上啊!!!不过差分约束还是比较好理解的,把不等关系变成三角不等式的形式,可以跑最长路也可以跑最短路,只不过连边不太一样罢了,跑之前自己想好就行了。不想在说什么了,恶心!View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 #include<cma 阅读全文
posted @ 2013-03-19 22:55 Zig_zag 阅读(268) 评论(0) 推荐(0)
bzoj 1016 最小生成树计数
摘要: 首先能发现一个规律,就是重构最小生成树的时候,一定不可能用一条权值较大的边和一条权值较小的边去替换他们中间的两条边。简而言之,就是只能权值相同的边相互替换。再进一步说,就是每种权值的边的数目是一定的。 题目上说值相同的边最多10条,那么我们可以DFS选哪些,然后用并查集来判断是否成环。这里要注意,我们先kruskal把每种边选几条求出来,再按kruskal的顺序dfs每一种,每dfs一种,我们就要把这些边连起来(也就是边dfs边kruskal),这样可以确保求出每种边的组合是合法的。最后把它们乘起来就行了。 看一些题解上说如果相同的边多了要用矩阵,表示不太懂......minmst... 阅读全文
posted @ 2013-03-19 22:53 Zig_zag 阅读(282) 评论(0) 推荐(0)
bzoj 2594 水管局长数据加强版
摘要: 其实这个题就是用LCT动态地维护一棵最小生成树..如果正着做的话,会发现删边以后扫边表找边会很疼,于是我们反着想。因为没要求在线,那么我们从后往前看,如果删掉那些询问里的边以后,我们求出了一棵MST,那么其他的边就永无翻身之日了。然后就无视它们好了。用lct维护边的话依然很恶心,那么我们把边变成点(参考某神题解),这样添加和删除就直接在这个代表边的点上做就行了吧。那么我们只需要记录一下每个询问的两个点之间的边是哪个点就行了。一开始做MST的时候,用不着findroot用并查集就行了。注意修改的时候要判断加的这条边和这两点间的最大边的大小。可是,超时了......pascal选手的无奈。花了1个 阅读全文
posted @ 2013-03-19 22:44 Zig_zag 阅读(450) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 下一页
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3