• 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$的链,那么原图不会发生任何改变

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

    代码

  • 相关阅读:
    关于Java常见的误解
    Java程序设计概述
    是结束,更是开始!
    从零开始单排学设计模式「简单工厂设计模式」黑铁 III
    某神秘公司 RESTful、共用接口、前后端分离、接口约定的实践
    这40张图送给单身程序员,情人节请一笑而过!
    科技圈晒开工福利!2019一起定个小目标!
    IDEA一定要懂的32条快捷键
    假期结束了,我相信未来会更好!
    有一种痛,叫 “今年没有年终奖”!!!
  • 原文地址:https://www.cnblogs.com/huangchenyan/p/14033298.html
Copyright © 2020-2023  润新知