Atcoder 试题乱做 Part 1
难度标签:
[AGC002D] Stamp Rally
直接整体二分,然后看连通块大小是不是
另外一个做法是,首先观察到要求“最大边编号最小”,所以一定只会在编号的最小生成树上走。于是这就是一个经典的
[AGC002F] Leftmost Ball
注意到将每种颜色的第一个球染白,那么一组合法的解一定满足:对于任意前缀,其中出现的颜色个数
如果逐个转移,首先复杂度极大可能是至少
不过这就会导致算重。具体来说,如果两个白球贴在一起,他们代表的颜色都被放在这两个白球的后面,这样两个白球就可能会导致重复计算。
于是,每次钦定当前要放在从左往右第一个空的位置,考虑当前位置是放白球,还是放一种颜色的球。因此设计
因此最后复杂度是
[AGC003E] Sequential operations on Sequence
首先观察到如果
如果依照题意模拟,可能不是特别好做。此时不妨考虑正难则反,从最后一个序列开始反向计算。具体来说,我们可以直接维护所有数组各自出现了多少次,然后会有一些前缀出现了更多次(不完整的循环)。每次只需要将序列缩短,然后重新计算贡献。
一个前缀在序列缩短的时候,其变化应该形如:被拆成若干整体加,和另外一个前缀(整除与取模)。注意到一个数被成功取模,其大小至少缩小一半,所以只需要拿 multiset
维护这样的前缀,然后每次只遍历能成功取模的部分(显然是一个后缀),这样复杂度就是
[AGC003F] Fraction of Fractal
第一步没想到。
首先将问题进行一些分类。本题最关键的是原图形联通的条件。首先,如果一个形状上下拼接能联通,且左右拼接也能联通,则说明不管如何,一定只有一个连通块。
如果上下、左右拼接都不连通,则显然分出来的图形接不起来,答案是 #
的个数。
接下来,这个问题就转化为只有左右拼接联通、或上下拼接联通,的情况了。不妨只讨论左右拼接的情况。
由于上下拼接怎样都不行,所以实际上每一行可以类似于认为是“独立的”。只需要看有多少种情况会使得左右接起来,导致连通块变少。
注意到如果在图形中出现 ##
,那么就会出现两个连通块的合并。合并多少个连通块呢?这实际上就是上一个分形中,在一侧且能被拼接的连通块个数。
于是设 #
的个数,##
的个数,#
个数”。如果设当前连通块个数是
因为一个 ##
会导致
因为一侧的能拼接的 #
会变成
##
或竖起来,面就是四个 #
的矩形。这些都可以通过类似的讨论通过矩阵来维护。
[AGC001F] Wide Swap
果然 AT 并不是我能做的东西/kx
题目中说,如果下标
如果相邻元素
满足 ,则可以交换 。
邻项交换看起来是我们更熟悉的东西。做这样一步转化有什么用?注意到只有相邻两项差距
把这句话翻译回
对于任意一对下标
,那么 的相对关系不会变化。
不妨假设
于是,我们一定会连出一个
注意到这个问题实际上就是 [HNOI2015]菜肴制作,其答案是将
则现在唯一的问题在于,该图的边数高达
[AGC001D] Arrays and Palindrome
考虑对于一个固定的
通过一些手玩,发现好像如果存在一个
那么,对于一个合法的
[AGC005F] Many Easy Problems
憨憨题。
考虑计算每个点对固定
其中
一开始以为本质不同的 k 只有根号个,然后直接冲了个暴力,于是 T 飞了
把组合数拆开,差卷积形式,直接卷一下就行了。
[AGC006C] Rabbit Exercise
这就是命运?要是在 NOIP 之前做到这道题了我 tm 做 variance 的时间直接减 1h/px/px/px
注意到将
这和
时间复杂度为
[AGC006E] Rotate 3x3
首先注意到构成一列的元素是不会改变的,只有顺序会发生变化。因此,我们可以将
则一次操作相当于交换距离为
显然,下标奇偶性不同的
这样就可以通过交换两次
于是现在只需要先忽略正负,将奇偶全部还原,然后再考虑用上述操作修改正负性。
将奇偶换到正确的位置,需要的操作次数奇偶性不变(和逆序对奇偶性一致),于是例如把奇数改好后,对偶数的正负性的改变次数奇偶性是确定的,反之同理。
则只需要知道在位置移动完毕后,奇偶的负数个数是否都是偶数就行了,因为这样就能通过上述操作将其全部变为正数。特殊的一点在于,如果
所以只需要对奇数、偶数下标分别计算逆序对奇偶性即可。时间复杂度 太懒了所以写的带 log
[AGC005D] ~K Perm Counting
显然考虑容斥,设
一个位置不满足条件,则他只有至多两种取值,这样会构成若干条链,其中“取值”与“下标”在链上交替出现,每次只需要从链上选取不相邻的若干条边就可以表示一种有若干个位置不满足的方案(相邻则说明一个下标出现两个取值/一个取值在两个下标出现),这个方案数明显是一个组合数。
由于数据范围很小,所以暴力做卷积就好了,记得剩下的部分要乘上阶乘。时间复杂度
Leftmost Ball 也能算 Easy 了?? 这是什么吊打集训队神仙?
Leftmost Ball 也能算 Easy 了?? 这是什么吊打集训队神仙?
Orz
这是什么吊打集训队神仙?
Leftmost Ball 也能算 Easy 了?? 这是什么吊打集训队神仙?