zoukankan      html  css  js  c++  java
  • 题解-AGC013

    AGC013

    A B C D E F
    场上完成 Yes Yes Yes No No No
    补题完成 Yes Yes Yes Yes Yes No
    题解完成 Yes Yes Yes Yes Yes No

    F 貌似是个带毒瘤,到时候无聊了再补吧。


    AGC013A Sorted Arrays

    luogu

    这东西可以贪心。

    记录当前前面一个数、这段的状态(升、降)。

    如果当前的数和前面的数的关系和状态不同,就新开一段。

    注意跳过与前面一个数相等的数。

    aclink


    AGC013B Hamiltonish Path

    luogu

    题目教你做题:两端如果有没有遍历的节点就加入。

    所以先把链设为 ({0}),然后往两边扩张即可(甚至都不需要 dfs,具体看代码)。

    aclink


    AGC013C Ants on a Circle

    luogu

    首先就是一个经典的脑经急转弯:可以通过假设每个蚂蚁穿过对方得到最终位置集合。

    然后容易发现每个蚂蚁就在它前后两只之间撞,所以蚂蚁之间的相对位置不变。

    于是题目转化为要求 (1) 蚂蚁最后的位置排名。假设蚂蚁遇到对方以后会穿过对方并交换编号。

    想想在 (0) 处有一只 (0) 号的蚂蚁,如果别的蚂蚁从左边穿过它,它的编号 (-1),否则它的编号 (+1)

    所以只需要求出所有蚂蚁穿过它的总次数,就可以推出 (1) 号蚂蚁的位置了。

    aclink


    AGC013D Piling Up

    luogu

    聚焦于盒子中的红砖个数。设 (f(i,j)) 表示前 (i) 个操作,盒子中有 (j) 个红砖的序列个数。

    如果初始化 (f(i,j)=0(0le jle n)),那么同样的颜色序列容易被统计多次。

    场上想了很多玄学方法,后来还是贺了题:可以只在红砖数曾经为 (0) 过的初始情况下统计这个序列。

    所以可以设 (f(i,j,t)) 表示前 (i) 个操作,盒子中有 (j) 个红砖,红砖是否为 (0) 过的序列个数。

    转移类似,很无脑,不讲了。

    aclink


    AGC013E Placing Squares

    luogu

    容易想到 dp 做法,但是对解决本题鲜有帮助。

    可以把 (a_i^2) 转组合意义:(n) 个连续的球,可以划成若干段,

    每个球可以染色以及踩扁,每一段球恰有一个被染色,恰有一个被踩扁(染色的也可以被踩扁)。

    可以设 (f(i,s)) 表示前 (i) 个球,当前这段已经被完成了集合为 (s) 的操作的方案数。

    发现这东西有个小优化,由于染色、踩扁本质相同,所以可以设 (f(i,j)) 表示前 (i) 个球,执行了 (j) 个操作的方案数。

    可以用矩阵快速幂优化。

    aclink


    [Huge m --AFO-- ]

  • 相关阅读:
    Windows Service开发介绍
    解决Vuex持久化插件-在F5刷新页面后数据不见的问题
    selenium+python 安装使用
    字符串拆分姓名、电话、省市区逻辑
    常用正则表达式大全——包括校验数字、字符、特殊密码过滤
    uni-app 地图初用 map
    前端常见手写笔试题
    数组去重和排序
    js获取当前时间年份,处理年月日
    js循环匹配组合成新对象或js循环组合新数据
  • 原文地址:https://www.cnblogs.com/George1123/p/14293538.html
Copyright © 2011-2022 走看看