首页 > 其他分享 >AGC 002~005

AGC 002~005

时间:2023-12-25 21:55:06浏览次数:23  
标签:dots 个数 位置 AGC 黑格 002 杨表 005 序列

AGC002

E - Candy Piles

考虑题目给的两种操作,假如把 \(a_1,a_2,\dots,a_N\) 列成杨表的形式:将 \(a_i\) 从大到小排序,第一列有 \(a_1\) 个点,第二列有 \(a_2\) 个点,……,且每一列最底下是对齐的,那么这个游戏相当于每次消去最底下一行或者最左边一列,第一个把整个杨表消完的人输。

再转化一下可以变成,有一个点初始在 \((0,0)\),每次可以将它向上或向右移动一格,最先将它移动到杨表的边界处的人输。(Editorial 里有图。)

发现只要 \((x+1,y+1)\) 不在杨表边界上,\((x,y)\) 的输赢就一定和 \((x+1,y+1)\) 相同。于是我们可以把 \((0,0)\) 移动到最靠近杨表边界的那个位置,此时只有往上走若干步和往右走若干步两种选择,只需要检查这两种里是否有一种到边界的距离是偶数即可。

时间复杂度 \(O(N)\)。

F - Leftmost Ball

挺简单的。

一个序列是合法的,当且仅当:

  • 有恰好 \(N\) 个 \(0\) 和 \((K-1)\) 个 \(1,2,\dots,N\);
  • 每个前缀的 \(0\) 的个数大于等于 \(1,2,\dots,N\) 中出现过的数的个数。

这样我们只需要考虑 \(1,2,\dots,N\) 中每个数第一次出现的位置。由于这些数没有区别,我们可以假设它们是按顺序出现的,最后将答案乘上 \(N!\) 即可。

设 \(f_{i,j}\) 表示长为 \(i\) 的序列,填了 \(1,2,\dots,j\) 以及 \((i-j)\) 个 \(0\) 的方案数。下一个填 \(0\) 的转移是简单的;如果下一个填 \(j+1\),那么这两个数组可以任意穿插起来:

  • \((K-2)\) 个 \(j+1\);
  • \(j+2,j+3,\dots,N\) 各 \((K-1)\) 个,以及 \((N-i+j)\) 个 \(0\) 组成的序列。我们并不需要知道这个序列具体长成什么样,因为它的形态是在后面的 DP 过程中决定的。

于是穿插的方案数可以直接用组合数算。时间复杂度 \(O(N^2)\)。

AGC003

E - Sequential operations on Sequence

好像是和题解不太一样的做法。

把题面中的 \(q\) 叫做 \(a\),并令 \(a_0=N\)。首先我们只需要保留 \(a\) 中的所有后缀最小值。倒着做,考虑最后那个长为 \(a_Q\) 的序列,它当中的每个元素对答案的贡献系数都是 \(1\)。而把它缩成一个长为 \(a_{Q-1}\) 的序列,就相当于把 \(a_Q\) 中每个位置的贡献系数加到 \(a_{Q-1}\) 中的对应位置上。

设进行了 \(i,i+1,\dots,Q\) 这些操作后的贡献数组是 \(b_{i,1},b_{i,2},\dots,b_{i,a_i}\)。我们用 map 维护 \(b_i\) 的从 \(2\) 开始的差分数组中的所有非零项,以及 \(b_{i,1}\) 和 \(b_{i,a_i}\) 的值。发现进行 \(a_{i-1}\) 相当于:

  • 对于差分数组中每一个下标 \(>a_{i-1}\) 的项 \((j,x)\),把它加到 \((j-1)\bmod a_{i-1}+1\) 位置上,并且计算它对 \(b_{i-1,1}\) 的贡献;
  • 在 map 中插入 \(((a_{i}-1)\bmod a_{i-1}+2,b_{i,a_i})\) 这一项,这是 \(b_{i-1}\) 中靠后的一段比靠前的一段少加的那部分。

由于每次一个二元组被删除后,它的下标都会至少除以 \(2\),所以总的时间复杂度是 \(O(Q(\log Q+\log V))\)。

F - Fraction of Fractal

一个很重要的条件是,开始时的网格是四连通的。如果给定的网格左右拼接和上下拼接时,两个连通块都能合并,那么最后的图形中一定只有一个连通块。如果都不能合并,那么最后的图形中就有 \(b^{K-1}\) 个连通块,其中 \(b\) 是黑格个数。

否则不妨假设左右能够合并,那么答案就是最后的黑格个数减去左右相邻两个都是黑格的位置数。设 \(b_{i},c_{i},d_{i}\) 表示 \(i\) 级分形中的黑格个数,左右相邻两个都是黑格的位置数,左右拼起来都是黑格的位置数,那么 \(b_{i+1}=b_1b_i,c_{i+1}=b_1c_i+c_1d_i,d_{i+1}=d_1d_i\)。这显然是有结合律的,于是快速幂即可。

标签:dots,个数,位置,AGC,黑格,002,杨表,005,序列
From: https://www.cnblogs.com/alan-zhao-2007/p/17927058.html

相关文章

  • [NOIP2002 提高组] 均分纸牌
    [NOIP2002提高组]均分纸牌题目描述有堆纸牌,编号分别为。每堆上有若干张,但纸牌总数必为的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为堆上取的纸牌,只能移到编号为的堆上;在编号为的堆上取的纸牌,只能移到编号为的堆上;其他堆上取的纸牌,可以移到相邻......
  • java接口自动化测试实战002----测试数据封装及ExcelUtil优化
    一、利用testNG测试框架进行封装1、封装实现新建测试类,类中新增多个方法,每个方法存储一条测试数据并调用HttpUtl类中的doGet或doPost方法。缺点:代码复杂、繁琐,且不适用测试数据量大的情况。2、封装步骤(1)maven的pom.xml文件中添加testNG测试框架的依赖,如下所示:<!--https://......
  • linux基础002-----环境搭建1
    一、               vimtools安装    在终端输入gcc-v如果显示gcc的版本说明安装了gcc  之后一直回车          关闭系统后,在虚拟机中找到要克隆的系统,右键---管理---克隆,选择克隆的位置(选择大的磁......
  • AC1005 安卓图案解锁
    链接:https://ac.nowcoder.com/acm/contest/20960/1005来源:牛客网题目大意:给定一串序列,判定是不是合法的Android密码.安卓图案解锁的密码有这样的一些特点:1.每个数字最多只会被使用一次。2.如果想直接连接两个数字,但是线段中会经过另一个数字,当且仅有那个数字已经在之前就......
  • 2002 - Can't connect to server on '54.xxx.xxx.xxx' (36)
    远程连接mysql数据库的时候显示Can'tconnecttoMySQLserver(10060)如下图所示可以从以下几个方面入手,找出错误的原因:1.网络问题网络不通时会导致这个问题检查下是不是能ping通2.mysql账户设置mysql账户是否不允许远程连接--mysql-uroot-p--showdataba......
  • 242-InetAddress.getLocalHost().getHostName() took 20021 milliseconds to respond
    一台windows服务器,要部署jar,启动成功,却无法正常请求。会报错:InetAddress.getLocalHost().getHostName()took20021millisecondstorespond.Pleaseverifyyournetworkconfiguration.经查,该服务器启动了一个其他服务,该服务占用了所有的网络请求带宽,导致网络不通。找到服......
  • [AGC054C] Roughly Sorted 题解
    题意定义一种操作为交换\(a_{i}\)和\(a_{i-1}\)。对于一个长度为\(n\)的排列,你需要操作若干次,使这个序列变合法,一个序列合法指:满足对于每一个\(1\lei\len\),都满足包含\(a_i\)的逆序对的个数不超过\(k\),并且要求最小化操作次数。现在给定一个操作后的序列,询问原序列可......
  • C0328 【1005 C组】模拟测试 斜率 题解
    原题链接:斜率。题意在一个平面直角坐标系中,给定\(n\)个点的横纵坐标,求出哪两个点所构成的连线的斜率最接近\(\frac{P}{Q}\)。数据范围:\(n\le1000000\)。思路显然这是一道数学题,不能直接暴力去找答案。首先我们可以弱化一下题目,求出斜率最接近\(y=0\)即\(x\)轴的两......
  • 【题解】AtCoder agc065_a Shuffle and mod K
    传送门:https://atcoder.jp/contests/agc065/tasks/agc065_a 为了方便理解,我们把要求的东西乘一个$-1$,再把答案序列倒过来;也就是说,我们现在要求$min_{A'}^{A'为A的排列}(\sum_{i=1}^{N-1}((A_{i+1}-A_{i})$$mod$$K))$比较显然的是,如果我们确定了答案序列的第一个数是多......
  • [AGC016D] XOR Replace 题解
    题目链接点击打开链接题目解法很有思维难度的一道题首先考虑简化操作(或者说用一种比较好的方法表示)假设我们选择交换的位置为\(x\),不难发现,操作等价于交换\(sumxor\)和\(x\)于是,有解的条件就好判了,即\(\{b_i\}\subseteq\{a_i\}\bigcap\{x\}\)操作可以理解为路径,即我......