AGC6 总结

先开坑

D.Median Pyramid Hard

尝试把这道题做成数学题,推出了一个三项式系数斜线求和的东西。。数学学傻了

还是听从fyy的教导,老老实实二分,真诚膜拜边老师

考虑求中位数的常规操作二分中位数,将比$mid$小的数变为$-1$,比$mid$大的数变为$1$

那么现在就是求出顶上是$-1$还是$1$

关注轴线上的那些元素,可以发现如果轴线上的三个元素$n,n+1,n-1$有$2$个$1$或者$2$个$-1$连着,那么在向上递推的时候,这个两个连着的数是不会改变的,那么最后留下来的一定是连着的数字

但如果是$1,-1$交替出现,考虑扩展上面那个做法,以轴线为中心点,向左右两边扩展直到找到$2$个连续的数字,第一次找到的数字就是答案,理由也是一样的

需要特判全是$1,-1$交替的情况

代码

E.Rotate 3x3

首先发现这种操作是不会改变一个元素所在的列,并且列中元素要么是升序要么是降序

那么可以抽象为一开始给出一个排列$p$,每一个元素都带有$0$或$1$的数字$c$,$0$表示这个列是升序的,$1$表示这个列是降序的,操作是交换两个相邻奇偶性相同的元素,并将这个两个元素和中间的元素的$0/1$反转,问最后能不能得到$p_i=i,c_i=0$的序列

那么可以发现,把奇数位上的元素变为有序的操次数的奇偶性,和把所有数字变为0操作次数的奇偶性相同的话,偶数也是一样

对于将元素调整为有序的步数就是其逆序对的个数,对于奇偶分类统计逆序对

那么现在就是要统计把所有数字变为$0$的操作数

我想了一个比较复杂的做法,题解给出了更加简洁的做法

可以发现存在一组操作,使得可以把相邻两个奇数位的元素交换,并且把将偶数位上一个位置$0/1$反转

那么只需要统计出来奇偶位置上$1$的个数,奇数位$1$的个数和偶数位上的逆序对奇偶比较,偶数位$1$的个数和奇数位上的逆序对奇偶比较即可

代码

F.Blackout

考虑将每一个数对转化为有向边,那么操作就是每一次找出来长度为$2$的链,将这个链补成一个三元环

首先如果原图中有二元环或自环,最后得到的边数就是这个联通块中点数的平方,但这只是一个充分条件,不是必要条件

现在考虑怎样图可以变成这种状态

由于原来图上每一条边都是三元环上的某一条边,那么对于现在图上的点一定需要分成$3$个不相交的集合,使得边只存在于集合之间而不存在于集合内部

那么可以给图三染色,如果染色成功并且三个颜色都用到了,那么说明不会出现自环或者二元环,那么得到的边数就是三个集合中选出两个集合连边数量之和

如果染色成功但是有颜色没有用到,那么说明原图找不到一个长度为$2$的链,那么原图不会发生任何改变

如果染色不成功,那么说明原图一定会产生自环或二元环直接统计答案

代码

posted @ 2020-11-24 22:51  SevenDawns  阅读(160)  评论(2编辑  收藏  举报
浏览器标题切换
浏览器标题切换end