【氵总结】2020.10.6 A

估:100+61+0=161

实:50+56+0=156

T1:染色大战

给出一个矩阵以及每个格子的颜色(n,m<=1000,颜色编号<=10^6)

设联通块内格子可以走相邻的颜色相同的格子到达其他格子

q个询问,每次将1所在联通块的颜色改为x,并询问新联通块的大小

可知每次更新,原联通块内的格子是不会被踢出联通块的,只需考虑有哪些点要加入联通块

可以记录下联通块相邻的同种颜色的格子位置,每次改颜色便将对应颜色的所有要加入的格子加入,并且搜索其相邻格子,颜色不同的记录下,相同的加入联通块,并递归进去继续搜索

最多会搜索nm次,时间没问题

由于初始联通块大小只计算了(1,1),因此挂了50分(悲)

T2:树的重心

给出一棵树及其点权,求其包含的所有点数为k的联通块的第一重心点权和

(当联通块有两个重心,设第一重心为编号较小那个,否则为唯一重心)

简单树形dp可以nk^2得56分

菊花图和链形都不难想,但链形没时间打了,此外挂了k=2的子任务

ps:破案了,k=2时因为一些细节方案数传不下去,答案会错

将dp优化为nk即可AC【微笑】

T3:随机的排列

给出一个排列p,对于任意两个点i,j,令l=min(i,j),r=max(i,j),如果pi>pj且对于任意l<x<r满足px<pj,则在i,j间加入有向边

设一个点被覆盖当且仅当本身为关键点或被关键点指向

每次询问交换Px,Px+1,求覆盖此图所需最少关键点数

不会

完全不会

没做出T2,不过可以再高点分,下次如果能码快点能更好,最好再检查一下

原文地址:https://www.cnblogs.com/namevastblog/p/13775267.html