刷题List+一句话题解

P2468染色:熟练泼粪+线段树维护一下左右边界颜色以及颜色段数,查询的时候看看top[u]和fa[top[u]]的颜色是否相同,相同-1即可

P2483K短路:A*模版题,倒着跑dis,然后到一个节点的时候将当前已走的dis作为h,将到终点的最短路作为g来求估价函数,每次取最小的,取k次即可

P1627中位数:对于中位数只需要考虑有多少个数比他大和多少个数比他小,然后大的+1小的-1相同不变维护一个sum,这样对于sum相同的点来说长度一定为奇数,在前面和后面维护cnt数组求出出现次数,左右相乘即可

P4171:满汉全席:2_sat裸题,选h到m建边,然后对于不选的有约束的向约束方向建边,最后跑tarjan,判断是否有又选h又选m的即可

P3154循环赛:暴力方法就是搜索,对于全选还不够的剪枝,全不选都多的剪枝,从左到右搜索即可 巧妙一点的方法就是将搜索答案hash一下存下来做成记忆化搜索

P2146软件包:熟练泼粪裸题不说了。。

P4147玉蟾宫:悬线法,维护悬线长度和左右扩张距离即可

P2617动态区间第K大:雷同于静态,sum的求和可以用树状数组维护,对于i的修改就对应树状数组for一下然后修改对应的根,查询的时候树状数组查询和做差,然后做法类似静态

P1972HH的项链:离线询问以右端点排序,然后只保留一种类型最后出现的位置,在对应的树状数组上修改一下,然后求值即可

对于2_sat :从一种方案的选就必须选或不选必须选的条件入手,对于强制性的条件建边,一般来说可以用tarjan跑一下然后判断有矛盾的是否在一起从而判断是否可行

猜你喜欢

转载自blog.csdn.net/beloved_rancy/article/details/82989447