2018.8.27

Pre

很没有面子又犯了15号的错误,把所有时间砸在了一个题上面……
而且6分钟拿了我今天所有的分……(完了完了)

T1

感觉T1很水就是个纯贪心,主要是发现了每个儿子都只有除了根节点之外唯一的祖先的时候一定是最优解的性质就好切啦,最后分类讨论一下 n - 1 ( n - 1 意义是只考虑除了根以外的所有点的分配状况 )和k的关系就好啦(能否刚好塞满),和6分钟就写完了T1……

T2

一开始以为bitset一定是对的,结果复杂度分析错了很难受啊,而且位运算炸int了活生生被卡到0分……

bitset做法不多讲了就是4个颜色4个bitset,再log构造e的长为r-l+1的字符串(倍增嘛),倍增多了就给它&回来,然后暴力&一下count一下就好啦。

正解是线段树……我其实一开始也写的线段树板子都写好了,最后想到了bitset认为bitset大法好直接刚bitset……

首先可以发现,字符串e的长度是非常小的,所以我们考虑对于每一个点维护从某个点开始平铺e串恰好能够从i点开始平铺,也就是记录一个节点使得无穷多的e中的字符能够从某一个e的循环节的起点与i重合,而这样的点只有lenth of e个(最多每lenth of e个点就会重复一次),所以定义状态:Dp(pos,i,j,x)长度为j的e串恰好平铺i时pos地方颜色x的个数,那么由于要滋磁修改操作,所以使用线段树维护pos,每一个节点都有一个三元组对应的值(i,j,x),和前面定义一样,这样查询区间内就很方便了,修改就是普通的modify,维护一下就(i,j,k)好啦,查询的时候分别查询4种颜色,每次查询对应的的i值是当前(L+e的第几个字符)%e的长度!

这道题需要挖掘的性质是e很小可以记录平铺的状态……

T3

T3题都没看我最近是怎么了每次都有题没有看……

先做一次MST,发现对于MST上的树边ex,如果它一定要存在的话,假设有一条非树边出现并且和某一些树边形成了一个环且ex在这个环上的话,那么ex一定受到这条边的影响,所以对所有对树边有影响的非树边,其贡献就是其边权x-1,因为如果某条树边的边权定为了x,那么其一定不是必须在MST上了;对于非树边它要在最小生成树上出现,必须要小于其形成的环上的最小边,不然其存在不必要;

技巧:
1、寻找非树边在树边上形成的环的方法,其实就是该边接上其连接的两点的树链,这个计算贡献直接树链剖一剖就好啦!
2、不用枚举边来更新最小值,可以先排序(其实最小生成树的过程已经做了这件事了),那么如果某条非树边(一定是当前最小的)能够更新的树链上的边,直接区间修改就好啦!

还是寻找问题的本质,挖掘性质,比如本题目只要寻找树边和非树边的关系和影响就好啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值