首页 > 其他分享 >AtCoder Regular Contest 162

AtCoder Regular Contest 162

时间:2023-06-19 15:34:27浏览次数:40  
标签:AtCoder Contest 复杂度 Regular mathcal 162

A

答案即后缀最小值个数。

时间复杂度 \(\mathcal{O}(n)\)。

提交记录:Submission #42717665 - AtCoder Regular Contest 162

B

发现操作不改变逆序对个数奇偶性。

逆序对个数为奇数则无解;为偶数则可以直接模拟。

时间复杂度 \(\mathcal{O}(n^2)\)。

提交记录:Submission #42718848 - AtCoder Regular Contest 162

C

如果 Alice 不能一次成功,那 Bob 可以在 Alice 想使得 \(\text{mex} = k\) 的那个子树中填一个 \(k\)。

所以 Alice 必胜当且仅当存在使用至多一次操作就能填满且 \(\text{mex} = k\) 的子树。

时间复杂度 \(\mathcal{O}(n^2)\)。

提交记录:Submission #42720225 - AtCoder Regular Contest 162

D

如果确定了每个点的 \(\deg\),容易使用 prufer 序列求出生成树个数。

考虑 \(u\) 作为 good 点出现了多少次。枚举 \(u\) 子树中有哪些结点,直接计算即可,这需要背包求出 \(> i\) 的点中取 \(j\) 个,\(\deg\) 和为 \(k\) 的方案数。

时间复杂度 \(\mathcal{O}(n^3)\)。

提交记录:Submission #42729090 - AtCoder Regular Contest 162

E

按照出现次数从大到小填数。

设 \(f_{i, j, k}\) 表示填完出现次数 \(\ge i\) 的数,已经填了 \(j\) 种数,共有 \(k\) 个数的方案数,则转移时可以放的数和位置的个数均已确定,直接枚举并使用多重组合数计算即可。

算算复杂度,发现是 \(\sum_{i = 1} ^ n n \cdot \frac{n}{i} \cdot \frac{n}{i}\),因为 \(\sum \frac{1}{i^2}\) 是收敛的,所以时间复杂度为 \(\mathcal{O}(n^3)\)。

提交记录:Submission #42738742 - AtCoder Regular Contest 162

F

我感觉还是有点难的吧,不知道为啥大家都觉得简单。

一个观察:假设每行每列均有 \(1\),则对于 \(1 \le a < c \le n, 1 \le b < d \le m\),若 \(A_{a, b} = A_{c, d} = 1\),则对于 \(\forall i \in [a, c], j \in [b, d]\),均有 \(A_{i, j} = 1\)。

于是 \(1\) 出现的位置可以使用两条从 \((0, 0)\) 到 \((n, m)\)、没有重合边的轮廓线刻画,设 \(f_{i, a, c}\) 表示两条轮廓线走了 \(i\) 步之后横坐标分别为 \(a, c\) 的方案数,转移显然,可以求出所有 \(i \in [0, n], j \in [0, m]\) 的答案,乘上把全为 \(0\) 的行列补上的方案数求和即可得到原问题答案。

时间复杂度 \(\mathcal{O}(n^3)\)。

提交记录:Submission #42741022 - AtCoder Regular Contest 162

标签:AtCoder,Contest,复杂度,Regular,mathcal,162
From: https://www.cnblogs.com/Scintilla/p/17491280.html

相关文章

  • AtCoder Beginner Contest 220 H Security Camera
    洛谷传送门AtCoder传送门看到数据范围猜复杂度是\(O(\text{poly}(n)2^{\frac{n}{2}})\),所以考虑折半。至少有一个端点被选不好算,考虑转成两个端点都被选,但是边数奇偶性与\(m\)相同。称编号\(<\frac{n}{2}\)的点为左点,编号\(\ge\frac{n}{2}\)的点为右点(点编号从\(0......
  • AtCoder Beginner Contest 306 题解 A - E
    A-Echo题目大意给定一个字符串,需要把它每个字符重复输出。解题思路可以读完整个字符串,也可以按照字符读一个输出两个。ACCode#include<iostream>#include<algorithm>#include<cstring>#include<numeric>#defineendl'\n'#defineiosios::sync_with_stdio(fals......
  • AtCoder ABC306 DEF
    D-PoisonousFull-Course(DP)题意现在有\(N\)道菜,高桥需要依次享用。第\(i\)道菜有两个属性\((X_i,Y_i)\),其意义是:若\(X_i=0\),则第\(i\)道菜是解毒的,其美味度为\(Y_i\);若\(X_i=1\),则第\(i\)道菜是有毒的,其美味度为\(Y_i\)。当高桥享用一道菜,他的状态变化如下:......
  • AtCoder Beginner Contest 306 G Return to 1
    洛谷传送门AtCoder传送门考虑若干个能被\(1\)到达且能到达\(1\)的环,设它们的环长分别为\(a_1,a_2,...,a_k\)。那么我们现在要每个环走若干遍,使得步数不含除\(2\)或\(5\)以外的质因子。设第\(i\)个环走\(x_i\)遍,那么其实就是要求\(\sum\limits_{i=1}^ka_i......
  • 【题解】Atcoder ABC300 F.More Holidays(线性做法)
    F.MoreHolidays题目描述:给你一个由o和x组成的长度为\(N\)的字符串\(S\),以及整数\(M\)和\(K\)。保证\(S\)至少包含一个x。假设\(T\)是由\(S\)复制\(M\)次而成的长度为\(NM\)的字符串。考虑将\(T\)中的\(K\)个x恰好替换为o。你的目标是在替换后的......
  • AtCoder Beginner Contest 306
    A-Echo(abc306a)题目大意给定一个字符串,将每个字符输出两次。解题思路模拟即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);intn;......
  • AtCoder ABC056D 题解
    题目直达0x00思路从大到小枚举每个元素,同时加入\(sum\)进行累计,当\(k\lesum\)时,便会返现之前的元素可以构成“好的组”(因为他们都大于\(p_i\)),即有用的,所以要清空。0x01举个例子36143我们对输入排序后,会得到\(p\)为。431这时,我们的\(i=1\),即\(p_i=......
  • AtCoder ABC228D 题解
    [ABC299D]FindbyQuery题解0x00题目分析题目传送门经过分析,我们得到的几个关键信息:\(n\le2\times10^5\)最多可以问法官\(20\)个问题。s[1]=0,s[n]=1分析\(n\)的范围,发现\(\log_n=17.6096\),刚好比\(20\)小一点点。这时便考虑二分的做法。看到s[1]=0,......
  • AtCoder ABC047D 题解
    题意理解&分析:大概的题意应该是十分清晰的,就是一个人要从\(1\)到\(n\)的城市中买苹果。另一个人要其中调整价格。这里的调整也不需要太多,就\(1\)就可以了。但是,如果有多组购买方案可以得到相同的利润,就还需要将其他相同的价格一并调整。这道题的关键就在于求出有几组购买......
  • 题解 CF1830C【Hyperregular Bracket Strings】
    卡特兰数一个长为\(2n\)的序列,填入括号,有多少种合法方案?\(C_n=\sum_iC_iC_{n-i-1}\),其中\(C_0=C_1=1\)。它的封闭形式是\(C_n=\binom{2n}{n}-\binom{2n}{n-1}\)。problem给定一个长度\(n\)和\(k\)个子区间\(\{[l1​,r1​],[l2​,r2​],…,[lk​,rk​]\}\)。问有多......