【CSP-S2019模拟】【Comet OJ 模拟赛Day2T3】11.10比赛总结

最后几套模拟赛了

比赛思路

传送门

  • T1(赛博朋克酒保行动):随便算一算
  • T2(模拟旅行):刚开始觉得这题很神仙。但是数据那么大,肯定是直接最短路的。所以不妨思考一下怎么直接最短路。然后我想到直接以每一个关键点作为起点,一起最短路。但是可能会有自己到自己的情况。那么再记一个次短路不就好了(上了发SPFA)。
  • T3(迷雾华光):离线不是裸的树上莫队吗。

赛后消化

  • T2SPFA能获得0-20分不等的好成绩。众所周知,SPFA是O(nm)的算法。
  • 改成Dij啊啊啊啊啊(在线学习Dij)
  • T3对于序列问题可以直接分块。同理,对于树上问题也可以树分块(裸题??)
  • T3还是比较难打的。

Comet OJ 模拟赛 Day2

  • 没有打(真香)
  • 主要记录一下T3。
  • 题意就是在一颗树上每一次修改一个节点的二进制状态,求与它and为0的相邻节点的个数。
  • 首先只用记录每一个点的儿子的贡献。改的时候处理父亲。
  • O(2m)修改,O(1)查询
  • 或O(2m)查询,O(1)修改。
  • 平衡规划一下。改成O(2m/2)修改,O(2m/2)查询。
  • 对于一个状态,修改时前一半转移到它的父亲集合,后一半保留在原地。查询时前一半保留,后一半找它的子集。
  • 注意到如果儿子个数很少的话,其实是不如直接暴力的。对于d<=2m/2的暴力。
  • 这样就可以解决空间的问题。
  • 时间空间O(n*2m/2)

总结

  • 这辈子再也不打SPFA了(能dij为什么要SPFA)。
  • 分块的题目我还是很少直接想出来。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值