2019 南昌网络赛题解

A 、 B 、 E 、 G 、 H 、 I A、B、E、G、H、I ABEGHI代码见 g i t h u b github github链接:点击这里

比赛时候真的很可惜,差点可以校 d i v 2 r a n k 1 div2 rank1 div2rank1的,和第一差了一分钟的罚时(不到)
只做出来五题, E E E只是运气好,数据比较弱。
正解在这里,不过我并没有看懂:

B Fire-Fighting Hero

题意

给定无向图
k k k个点到所有点最短路的最大值。
求某个点到所有点的最短路的最大值

题解

第二条显然很简单
第一条的话,如果我们设置一个超级源点,那么问题就很简单了,超级源点连接 k k k个点,边权为 0 0 0,直接跑最短路即可。

I Yukino With Subinterval

题意

支持单点修改。
求子区间内的连续段个数,连续段指的是相同权值且尽可能长的段。
并且要求只计算连续段权值在 [ x , y ] [x,y] [x,y]中的子区间个数。

题解

不考虑修改的话,我们如何处理呢?
这是一个套路问题,我们只考虑连续段的最左边,只记录最左边的值。
比如:
3 3 3 4 5
我们记录的时候就是1 0 0 1 1
查询子区间的时候直接查和即可,但是这样子我们会发现显然是不对,因为在最左侧可能有贡献,但是它的最左侧不属于询问的子区间。
仔细考虑可以发现,只会有最左侧出现这样的情况,但其实最左侧是一定有一个贡献的。所以我们特判第一位是否符合权值的要求,符合就加一。
这样就变成了可以主席树或者离线树状数组可以做。
因为相当于求解: a ≤ x ≤ b , c ≤ y ≤ d a≤x≤b,c≤y≤d axb,cyd的子矩阵求和问题。
子矩阵求和问题都可以转换成二维前缀和求解二维偏序:
s u m ( a , b − > c , d ) = s u m ( 1 , b − > 1 , d ) − s u m ( 1 , b − > 1 , c − 1 ) − s u m ( 1 , a − 1 − > 1 , d ) + s u m ( 1 , a − 1 − > 1 , c − 1 ) sum(a,b->c,d)=sum(1,b->1,d)-sum(1,b->1,c-1)-sum(1,a-1->1,d)+sum(1,a-1->1,c-1) sum(a,b>c,d)=sum(1,b>1,d)sum(1,b>1,c1)sum(1,a1>1,d)+sum(1,a1>1,c1)
这四个子问题都是可以离线树状数组去的,或者这题也可以暴力主席树。

但是再考虑带修,对于主席树,就是带修主席树(目前不会:树状数组套主席树)
从偏序角度就是三维偏序,在之前的基础上加上时间序(也就是修改顺序)
唯一要考虑的是带修时候要判断对连续段最左边的影响,我的做法是转换成改变前和改变后的差别来判断。
三维偏序可以 C D Q CDQ CDQ解决 没了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值