Atcoder 题面传送门 & 洛谷题面传送门 神仙题. 在下文中,方便起见,用 R/B 表示颜色序列中球的颜色,用 r/b 表示染色序列中将连续的区间染成的颜色. 首先碰到这一类计算有多少个可以被得到的序列的问题,我们为了避免计算重复,肯定会先考虑什么样的序列能够被得到,从而设计一个 DP 状态.此题也不例外.考虑对于一个颜色序列它能否能够被得到,显然对于这个颜色序列中白色格子,它们肯定从来没有被覆盖,因此我们考虑这些白色格子被分割而成的连续段.我们将这些连续段分为两类:不含蓝色格子和含蓝色格…
Atcoder 题面传送门 & 洛谷题面传送门 首先 \(n^5\) 的暴力非常容易想,设 \(dp_{a,b,c,d}\) 表示以 \((a,b)\) 为左上角,\((c,d)\) 为右下角的矩阵的 complexity.枚举断点转移即可,时间复杂度 \(n^5\). 我们考虑优化这个 \(dp\),首先比较明显的一点:这个 \(dp\) 状态满足单调性,也就是说 \(\forall d_1<d_2,dp_{a,b,c,d_1}\le dp_{a,b,c,d_2}\),也就是说对于某个 \…
B - Reversi 题目链接:https://atcoder.jp/contests/agc031/tasks/agc031_b 题意: 给出n个数,然后现在你可以对一段区间修改成相同的值,前提是左右端点的值相同.问最后这n个数有多少种不同的值. 题解: 设dp[i]表示只考虑1~i这段,有多少不同的值.然后对于当前第i位,有两种选择,修改或者不修改,不修改的话就是dp[i-1]:修改的话就是dp[k],这里k表示上一个相同颜色的位置. 注意一下如果i-1和i的颜色相同,当前要跳过,这个时候…
洛谷题面传送门 & Atcoder 题面传送门 没错,这就是 Small Multiple 那场的 F,显然这种思维题对我来说都是不可做题/cg/cg/cg 首先如果我们把每个二进制数看作一个模 \(2\) 意义下的多项式 \(F(x)=\sum\limits_{i=0}^na_ix^i(a_i\in\{0,1\})\),那么上述操作就可以看作给一个多项式乘 \(x\) 和两个多项式加(减),我们记 \(D\) 为所有多项式的 \(\gcd\),或者更严谨一点,对于两个多项式 \(P(x),Q(…
Atcoder 题面传送门 & 洛谷题面传送门 首先我们考虑设 \(dp_{i,j}\) 表示对于一个 \(i\times j\) 的网格,其每行都至少有一个黑格的合法的三元组 \((A,B,C)\) 的个数,那么对于原来的 \(n\times m\) 的网格,如果其存在黑格的行的集合不同,那么三元组 \((A,B,C)\) 肯定不同,因此我们可以直接枚举有多少行存在黑格来计算答案,即 \(ans=\sum\limits_{i=0}^n\dbinom{n}{i}dp_{i,m}\),因此我们只需…
Preface: 这是生平第一道现场 AC 的 arc E,也生平第一次经历了 performance \(\ge 2800\)​,甚至还生平第一次被 hb 拉到会议里讲题,讲的就是这个题,然鹅比较尬的一点是我不知道腾讯会议开了白板之后不能看到电脑,导致我的 typora 没人能看到--所以就暂且把我 typora 的内容整了整改成了一篇题解(​ 题意: 有 \(n\) 种零食,第 \(i\) 种零食有 \(a_i\)​ 个. 有 \(m\) 个人领这些零食,第 \(i\) 个人最多领 \(b_…
这场一边吃饭一边打,确实还是很菜的 C - Traveling Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement AtCoDeer the deer is going on a trip in a two-dimensional plane. In his plan, he will depart from point (0,0) at time 0, then for each ibetw…
Time Limit: 2 sec / Memory Limit: 1024 MB Score : 700700 points Problem Statement You are given an integer NN. Build an undirected graph with NN vertices with indices 11 to NN that satisfies the following two conditions: The graph is simple and conne…
题意:现在要你构造一个只有{0,1,2,3} 长度为n且有m个限制条件的序列 问你方案数 思路:dp[i][j][k][now]分别表示四个数最后出现的位置 最后可以滚动数组 优化一下空间 ps:我的代码常数很大 其实有很多可以优化的地方 #include <bits/stdc++.h> using namespace std; const double pi = acos(-1.0); const int N = 107; const int inf = 0x3f3f3f3f; const…
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n\le 2e5\) 分析: 可以通过观察发现,无论删去那个点,比全部都走所差距的距离都是\(|a_i-a_{i-1}|-|a_{i+1}-a_i|+|a_{i-1}-a_{i+1}|\) 所以直接枚举即可. #include <bits/stdc++.h> using namespace std;…