合集-杂题乱刷
摘要:原题链接 CF624B Making a String 题目简述 现在有 \(n\) 个字母,要将这些字母拼成一个尽可能长的字符串,但是每个字母出现的次数不能相等,求这个字符串长度的最大值。 解题思路 首先输入 \(n\),再输入每个字母出现的次数,最后建造一个桶,存储桶内的每个数字,使得桶内每个数
阅读全文
摘要:原题链接 CF1221B Knights 题目简述 在一个 \(n \times n\) 的棋盘上放置黑马和白马,给出一个放置方式,使得黑马和白马之间的冲突数最多。 解题思路 这道题是一道贪心构造题,因为马每一步有 \(8\) 种移动方案,而我们假设将这个棋盘进行黑白交替染色,则会得到下图: 不难得
阅读全文
摘要:原题链接 CF1585B Array Eversion 题目简述 现在有一个长度为 \(n\) 的序列 \(a\),每次操作将 \(a\) 中不大于序列 \(a\) 中最后一个数的元素按照在 \(a\) 序列中的顺序放入 \(b\) 序列中,大于序列 \(a\) 中最后一个数的元素同样按照在 \(a
阅读全文
摘要:原题链接 CF468A 24 Game 题目简述 现在有一个序列 \(n\) 包含 \(n\) 个整数 \(1 \sim n\),如果我们能经过加减乘三种操作让这个序列只剩下 \(24\),如果可以,输出 YES 并给出构造方案,否则输出 NO。 解题思路 首先不难看出,如果 \(n\) 小于 \(
阅读全文
摘要:原题链接 P9515 「JOC-1A」限时签到 题意简述 有一条公路上有 \(n\) 个商店,每个商店分别在不同的时刻开放,求如何在 \(t\) 时刻之前到达 \(f\) 点并且到达最多开放的商店的数量,特别的,一个时刻只能走一格。 解题思路 这一道题是一道贪心题。首先,因为要在 \(t\) 时刻之
阅读全文
摘要:原题链接 CF283A Cows and Sequence 题目简述 给定一个初始为空的序列 \(a\),并给出 \(3\) 种操作方式: 将 \(a_1 \sim a_x\) 均加上 \(y\); 将 \(a\) 序列末尾增加一个正整数 \(x\); 将 \(a\) 序列的最后一个数字给去掉; 现
阅读全文
摘要:题目链接 CF1534C Little Alawn's Puzzle 题意简述 给定两个排列 \(a,b\),你可以进行的操作为交换一列中的两个数字,你需要求出操作后能够满足没有相同数字在同一行的数阵能的个数并对 \(10^9+7\) 取模。 解题思路 我们先举两个例子: 1 2 3 4 5 1 2
阅读全文
摘要:题目链接 P9253 [PA 2022] Ornitolog 2 题目简述 给定一个音高序列,输出最少要修改多少整数才能使这个序列成为交替鹡鸰鸟鸣的音高序列。 题意分析 操作后的音高序列总共有 \(2\) 种可能: 音量由高变低再由低变高; 音量由低变高再由高变低。 又因为大小范围是 \(10^4
阅读全文
摘要:题目传送门 一道算是 dp 的板子题了。 题意大概就是 01 背包 + 捆绑。 首先回顾一下 01 背包,一个比较基础的 dp 题,状态转移方程也很好想,是 \(dp[i][j]=\max(dp[i][j],dp[i-1][j-w[i]]+v[i])\)。 代码实现如下: 点击查看代码 #inclu
阅读全文
摘要:题目传送门 一道小清新动态规划题,直接设 \(dp[i]\) 表示前 \(i\) 个鼹鼠最多能打到几个,然后状态转移方程也很好想了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; long long n,m,ans,dp[1001
阅读全文
摘要:题目链接 数字三角形的变形。 直接在原来的基础上加个判断 \(3\) 倍的就行了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; long long n,m,ans=-1e18,a[110][110],dp[110][110][5
阅读全文
摘要:题目链接 一道 dp 的入门题。 \(O(2^n)\): 考虑直接爆搜,可以考虑到所有情况。 \(O(n^2)\): 考虑 \(dp\),设 \(dp_{i,j}\) 代表到达第 \(i\) 层第 \(j\) 个数所能达到的最大值。 状态转移方程为 \(dp_{i,j}=a_{i,j}+\max(d
阅读全文
摘要:题目链接 CF1904B Collecting Game 题意简述 给你一个由 \(n\) 个正整数组成的序列 \(a\) 和一个分数。如果你的分数大于或等于 \(a_i\),那么你可以将分数增加 \(a_i\),并从序列中删除 \(a_i\),你需要求出对于每一个 \(a_i\) 为你的分数时你可
阅读全文
摘要:题目链接 CF1272D Remove One Element 题意简述 给定一个长度为 \(n\) 的序列,你需要求出至多删除一个数后的这个序列的最长上升子串。 解题思路 首先我们可以想一下这题的弱化版,给定一个长度为 \(n\) 的序列,你需要求出至多删除一个数后的这个序列的最长上升子序列。 这
阅读全文
摘要:一道好题。 题目链接 考虑离线操作。 我们可以设 \(a_i\) 为当前 \(i\) 表示的数字,然后直接倒序操作,运用并查集的思想,可以 \(O(n)\) 通过此题。 参考代码: #include<bits/stdc++.h> using namespace std; long long n,a[
阅读全文
摘要:题目链接 一道 dp 板子题。 只需要设 \(dp_{i,j}\) 为前 \(i\) 位 \(\bmod 3\) 为 \(j\) 的方案数的数量即可。 剩下的就看代码了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std; #defin
阅读全文
摘要:题目链接 算法一: 直接暴力,时间复杂度 \(O(n^2)\)。 算法二: 使用双指针维护,时间复杂度 \(O(n)\)。 算法三: 是用前缀和维护,时间复杂度 \(O(n)\)。 这里提供算法二的代码: 点击查看代码 #include<bits/stdc++.h> using namespace
阅读全文
摘要:题目链接 简单贪心。 由于我们需要判断无解情况,于是我们可以在做的过程中记录答案。 比较容易发现,对于每个时间段,我们肯定是优先复习日期较近的考试的,贪心了这一点,就能轻松 AC 了。 参考代码: 点击查看代码 #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:题目链接 诈骗题。 容易证明,翻转任意一个“灵异区间”时,整个序列的“灵异区间”的数量总数都不会变,因此我们直接输出原数列的“灵异区间”的总数即可。 参考代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题?
阅读全文
摘要:题目链接 CF1914E1 Game with Marbles (Easy Version) CF1914E2 Game with Marbles (Hard Version) 题意简述 小 \(A\) 和小 \(B\) 想要玩一个游戏,规则是这样的,每个人手里有 \(n\) 种类型的弹珠,每种类型
阅读全文
摘要:题目链接 CF1925C & CF1924A Did We Get Everything Covered? 解题思路 容易看出,我们可以开个桶存储当前搜索过的字母,当所有字母都有了之后就将桶清空,然后从当前搜到的位置继续存储,如果桶的清空次数小于 \(k\) 次则一定有至少一个字符串无法达到要求,这
阅读全文
摘要:盲猜没人用此做法 题目链接 CF1927D Find the Different Ones! 解题思路 考虑分块,在一块内的数当且仅当他们是连续的且权值相同,并记录下他们的左右端点同时记录每一个数在哪个块内,对于每个块维护它的左右端点,然后对于每组询问如果 \(l,r\) 在同一个块内,那么 \(l
阅读全文
摘要:题目链接 简单计数题。 容易看出 \(<,>\) 这两个符号一定只有 \(1\) 种选择,而 \(?\) 就有 \(i-1\) 中选择,总方案数很好推出,这样时间复杂度为 \(O(nm)\),不能通过此题,因此我们考虑用逆元优化,优化后时间复杂度 \(O(m)\)。 参考代码: 点击查看代码 /*
阅读全文
摘要:题目链接 最典的状压 dp 了。 直接枚举每个状态然后用 01 背包的方式做即可。 时间复杂度 \(O(n2^m)\)。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits
阅读全文
摘要:链接 下位蓝。 题目可以用尺取法 + 区间加的方式来做。 参考代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> using namespace std
阅读全文
摘要:题目链接 题目链接(CF) 题目链接(luogu) 题意简述 有一个 \(n \times m\) 的矩阵,矩阵上的数字 \(1 \sim n \times m\) 自上到下,自左到右,对于每次操作,你可以向上,下,左或右移动一步,你需要构造出符合操作序列的 \(n\) 和 \(m\) 或报告无解。
阅读全文
摘要:题目链接 P8866 [NOIP2022] 喵了个喵 解题思路 这种题放在 T2 还是把总得分设为四道题目的得分的异或值吧。 调了一个下午。 测试点 \(1 \sim 3\): 一个显然的结论,每个栈最多有两个数字的时候最优。 我们可以留下一格栈作为辅助栈,用来消除用,其他栈随便放,容易发现,一个元
阅读全文
摘要:链接 花花场,被前两题给背刺了。 还是来讲下这题思路吧。 算法一 随机选取两个数,正确的概率约为 \(1\%\)。 期望得分 \(0\)。 算法二 两两之间都选一遍,需要选 \(n \times (n-1) /2\) 次。 然后建一个完全图容易求出每个数的大小。 期望得分 \(0\)。 算法三 正片
阅读全文
摘要:感觉 D2 比 D1 简单 /kx /kx /kx 链接 算法一 发现一个数 \(x\) 为 \(2^k(0 \le k)\) 时一定无法拆分。 此时直接分讨即可。 算法二 发现一个数 \(x\) 满足化为二进制下数位和为 \(2\),可以拆成两个 \(2\) 的非负整数次幂的数。 此时直接分讨即可
阅读全文
摘要:链接 套路题。 最小值: 排序后直接分讨即可。 最大值: 排序后枚举开头为 \(a_1\),\(a_n\) 的情况后双指针贪心即可。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #includ
阅读全文
摘要:E1 链接 一眼题。 直接预处理即可。 时间复杂度 \(O(n \log_2(n))\)。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> usin
阅读全文
摘要:题目链接 P1708 解题思路 解法一: 考虑预处理,这部分可以直接打表。 其他题解这部分讲的比较详细了,在此不再赘述。 期望得分 \(100\) 分。 解法二: 考虑数位 dp。 这里采用记搜的写法。 dfs(last,sum,maxsum,_1) 分别表示还需要枚举几位数,目前枚举的数位和,可以
阅读全文
摘要:先上 AC 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> using namespace std; #define map unordered_m
阅读全文
摘要:链接 构造思路: 考虑直接构造 \(100 \times 100\) 的方格,然后前 \(50 \times 100\) 为黑格,后 \(50 \times 100\) 为白格,构造形如以下方式即可。 #.#.#.#.#.#.#.# ............... #.#.#.#.#.#.#.# .
阅读全文
摘要:链接 妙妙构造题。 很容易可以看出要构造出一种可以交换相邻两格数的操作。 这部分显然可以写个爆搜找到规律。 然后进行暴力操作即可。 代码也不长。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #incl
阅读全文
摘要:题目链接(luogu) 题目链接(cf) 水 2400。 首先我们容易看出,答案具有单调性,然后无法使用数据结构进行优化,这时我们可以直接根号分治,发现总是有一段连续的区间数是相同的,因此我们直接根号分治套二分即可 AC。 参考代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗?
阅读全文
摘要:典题。 发现问题可以变为枚举 \(i\),求出两两数 \(gcd\) 为 \(i\) 的个数,但是这样还是 \(O(n^2)\) 的。 然后可以将两边同时除以 \(i\),原式变为 暴力筛复杂度是 \(O(n\log_2(n))\) 的,加个前缀和时间复杂度为 \(O(n)\)。 点击查看代码 /*
阅读全文
摘要:链接(luogu) 链接(at) 典题。 整除分块。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> using namespace std; #defin
阅读全文
摘要:链接 参考此题解 比较有意思的期望 dp,记得多特判 0 的情况。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> using namespace std;
阅读全文
摘要:感觉要好好补补 set 了。 链接 直接用 set 模拟即可。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #include<bits/stdc++.h> using namespace std; #
阅读全文
摘要:链接 很一眼。 容易发现除非操作时影响 \(1\) 这个数字,否则答案一定改变,直接特判影响到 \(1\) 这个数字的两种情况即可。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? */ #includ
阅读全文
摘要:链接 板题。 三个定义: \(dp_i\) 表示以 \(i\) 为根节点时,其子节点深度的和; \(siz_i\) 表示以 \(i\) 为根节点时,其子树的大小; \(dep_i\) 表示以 \(1\) 为根节点时,所有节点的深度。 参考代码: 点击查看代码 /* Tips: 你数组开小了吗? 你M
阅读全文
摘要:对下脑电波。 题目链接(luogu) 题目链接(at) 发现我们可以找出所有 \(x\) 当且仅当 \(x\) 为质数且 \(x \bmod 5 = 3\),这样任意五个数加起来就必定为合数了。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp
阅读全文
该文被密码保护。
摘要:题目链接 P10468 兔子与兔子 解题思路 字符串哈希板子题。 思路就是我们给字符串的每一个前缀和后缀都用一种特定的方式使其变为一个值,比如取一个乘数和模数,可以证明这样出错的概率极低。 参考代码 这里使用自然溢出三哈希。 #include<bits/stdc++.h> using namespa
阅读全文
摘要:题目链接 P10467 [CCC 2007] Snowflake Snow Snowflakes 解题思路 字符串哈希板子题。 思路就是我们给每个数列的所有排列都哈希一个值,然后判断是否有不同的数列的哈希值相同,如果有,就输出 Twin snowflakes found.,否则就输出 No two
阅读全文
摘要:题目链接 [ABC211E] Red Polyomino(luogu) [ABC211E] Red Polyomino(at) 解题思路 从第三个样例可以看出总的方案数一定很少,因此我们可以直接确定第一个被染色的格子后直接向外爆搜,搜到最后可以使用哈希判重,但光凭这样的话 \(2\) 秒钟肯定跑不过
阅读全文
摘要:大家一起来做下这个典题。 链接(at) 链接(luogu) 我们很容易可以想到处理前后缀的最长上升子序列的长度,然后容易 \(O(n \log_2 n)\) 预处理。 做完了。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不
阅读全文
摘要:链接 算简单题。 你发现最大值肯定可以用 \(n\) 次查出来。 然后可以证明 \(ans \le \frac{n}{k}\)。 总次数为 \(n + \frac{n}{k} \times k \le 2n\)。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心
阅读全文
摘要:题目链接 CF1759F All Possible Digits(luogu) CF1759F All Possible Digits(codeforces) 题意简述 有一个长度为 \(n\) 的 \(p\) 进制数,你需要求出至少通过几次操作才可以让 \(0 \sim p - 1\) 这 \(p
阅读全文
摘要:题目链接 CF1650D (luogu) CF1650D (codeforces) 解题思路 我们发现要想让第 \(i\) 个数变换一次就需要给第 \(i \sim n\) 中的一个位置做一次操作,因此我们很自然的就想到了倒推,容易证明这样是不劣的。 时间复杂度 \(O(n^2)\)。 参考代码 #
阅读全文
摘要:题目链接 CF1650E (luogu) CF1650E (codeforces) 解题思路 首先,你发现你只能改一个日期,那么我们肯定是改距离最近的旁边的两场考试,此时我们就可以将操作转化为删去一场考试并添加一场新考试的最小的休息时长,容易使用贪心 \(O(n)\) 解决。 总时间复杂度 \(O(
阅读全文
摘要:链接 发现这东西就很根号分治。 考虑两种情况: \(k \le 1000\),这部分直接用前缀和维护然后暴力做,时间复杂度 \(O(kq)\)。 \(k > 1000\),此时 \(n \le 500\),这部分直接预处理答案,时间复杂度 \(O(n^2 k)\)。 两个时间复杂度均正确,因此可以通
阅读全文
摘要:题目链接 CF1977B (luogu) CF1977B (codeforces) 解题思路 考虑通用做法。 我们发现如果直接用二进制来表示的话这个数会只包含 \(0,1\) 这两个数字。 发现这时阻碍我们构造的是连续的数字 \(1\)。 考虑消除连续的数字 \(1\)。 容易发现连续的数字 \(1
阅读全文
摘要:题目链接 CF1977C (luogu) CF1977C (codeforces) 解题思路 首先这题有一个简单的思路,就是当这个序列的 LCM 大于 \(10^9\) 时,显然取所有数字数字是合法的。 然后我们接下来考虑 LCM 小于等于 \(10^9\) 的情况。 发现这种情况 LCM 很小,且
阅读全文
摘要:好题。 直接上代码吧。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解! Problem: 算法: 思路: */ #incl
阅读全文
摘要:链接(luogu) 链接(codeforces) 有一个结论就是每次操作直接取一个存在目前最左边的最小值区间即可。 但是我不会证啊...... 大家感性理解。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打
阅读全文
摘要:链接 (Link) 一个好题。 就是说,你直接先求出这个数列的异或和,然后发现之后就可以两两匹配,如果无法匹配就默认这个数为 \(0\),然后做完了。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf
阅读全文
摘要:链接 没啥好说的,直接看代码吧。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解! Problem: 算法: 思路: */
阅读全文
摘要:代码恢复 2024.6.5。 链接 很简单。 直接找循环节就行了。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解!
阅读全文
摘要:代码康复训练 2024.6.6. 链接 并查集板子。 直接看代码。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解! Pro
阅读全文
摘要:代码恢复训练 2024.6.7. 题目链接 CF1979C (codeforces) CF1979C (luogu) 解题思路 我们发现,如果答案序列的和小于等于 \(x\) 时是合法的,那么容易得出答案序列的和小于等于 \(x + 1\) 时也是合法的。 因此我们发现答案序列的和的合法性是具有单调
阅读全文
摘要:代码康复训练 2024.6.7 无所谓,随便贪。 直接取前 \(x\) 大的红苹果,前 \(y\) 大的绿苹果和和所有无色苹果合起来取最大的 \(x + y\) 个苹果的值加起来即可。 容易证明一定合法。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是
阅读全文
摘要:代码恢复训练 2024.6.8. 题目链接 链接 (atcoder) 链接 (luogu) 解题思路 数据结构板子题。 设 \(ans_i = a_i \times b_i\)(\(a_i\) 和 \(b_i\) 是此时的 \(a_i,b_i\))。 设 \(f1(i,j)\) 表示 \(a_i +
阅读全文
摘要:代码恢复训练 2024.6.9. 链接 greedy。 从高往低枚举二进制位,check 方式显然。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外
阅读全文
摘要:代码恢复训练 2024.6.11. 链接 (luogu) 链接 (atcoder) 分层图板子。 结束。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rati
阅读全文
摘要:代码恢复训练 2024.6.10.(补) 链接 (luogu) 链接 (atcoder) 数位 dp 板子题。 dfs(last,sum,_1) 剩下未搜的数位数,当前非零数位数,目前是否取满。 这里采用记搜的写法。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是
阅读全文
摘要:代码恢复训练 2024.6.13. 题目链接 CF1985F (CF) CF1985F (luogu) 解题思路 由于一个回合可以用所有无冷却的技能,因此我们对于技能肯定是能用就用的。 进而推出答案具有单调性。 直接二分答案即可,注意二分边界问题,这里我开了 __int128 来避免这个问题。 参考
阅读全文
摘要:代码恢复训练 2024.6.14. bfs 板子题。 链接 (luogu) 链接 (atcoder) 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating
阅读全文
摘要:代码训练 2024.6.16. 二分并查集板子。 链接 直接上代码。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解! Pr
阅读全文
摘要:代码恢复训练 2024.6.15(补) 链接 (luogu) 链接 (atcoder) abc 最水的 G 了吧。 你发现,你最后肯定全在在同一个点上不动,而且你一定可以在 \(n \times m\) 回合内走到这个点,因此我们直接 \(dp_{i,x,y}\) 表示走 \(i\) 步到 \((x
阅读全文
摘要:状压板子。 \(dp_{i,j}\) 表示考虑到第 \(i\) 为状态为 \(j\) 的方案数。 时间复杂度 \(O(n \times 2^k)\)。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打
阅读全文
摘要:一个思想。 先计算出 \(a_i + b_j\) 的前 \(k\) 个,然后直接和这个和加上 \(c_k\) 再取前 \(k\) 个就行了。 代码: 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不
阅读全文
摘要:原题大赛。 一句话做法:取当前最优的比取当前劣的要更优。 点击查看代码 /* Tips: 你数组开小了吗? 你MLE了吗? 你觉得是贪心,是不是该想想dp? 一个小时没调出来,是不是该考虑换题? 打 cf 不要用 umap!!! 记住,rating 是身外之物。 该冲正解时冲正解! Problem:
阅读全文
摘要:题目链接 CF1987C Basil's Garden 提示 不妨把这个序列当做一个弹簧来处理。 弹簧会产生连锁反应。 解题思路 我们发现这个序列的区间是一段一段的,我们可以将每一段都当成一个弹簧,每两个数都会多产生 \(1\) 的贡献,那么这个区间的贡献就是这个区间的最大值加上这个区间的长度减去
阅读全文
摘要:题目链接 CF1987D World is Mine 提示 Alice 的策略是固定的。 考虑用动态规划解决问题。 解题思路 我们发现,Alice 的最优策略一定是每次取当前能取的美味值最小的蛋糕,而 Bob 的策略难以使用贪心维护。 于是我们考虑用动态规划来考虑 Bob 的策略。 我们发现,Bob
阅读全文
摘要:题目链接 AT_abc360_d (luogu) AT_abc360_d (atcoder) 解题思路 一个性质是,往左边走的蚂蚁无论怎么样都追不到左边的蚂蚁,而往右边走的蚂蚁无论怎么样都追不上右边的蚂蚁。 因此我们考虑将蚂蚁分为往左往右走的两堆。 发现对于每个蚂蚁都能走过一段区间,因此直接二分将右
阅读全文
摘要:upd: 哎哎哎,原来的题解没怎么写证明被叉了 /yun 所以我来补下证明。 upd2: 修改代码,增加代码可读性。 题目链接 P10678 『STA - R6』月 解题思路 时间复杂度优于官解的做法。 首先我们观察到一个性质就是 \(\sum a_i = 2 \times (n - 1)\),因为
阅读全文

浙公网安备 33010602011771号