随笔分类 - codeforces之旅
我在算法道路上面的一些成长
发表于 2023-05-01 19:42阅读:25评论:0推荐:0
摘要:题目链接 C 核心思路 一定要看清楚题目,题目是要我们最小哦。 首先看可不可抽像为数学表达式,答案肯定是可以的。 x=p1^d1*p2^d2*..*pn^dn; D=\sum{(d1+1)*(d2+1)*(d3+1)*...(*(dn+1))}; 这个D表示的x的约数的个数,这个公式还是很好理解的,
阅读全文 »
发表于 2023-05-01 10:45阅读:27评论:0推荐:0
摘要:题目链接 E 核心思路 首先我们先考虑什么情况下是肯定不可以交换成功的: aaabc.比如像这种a的个数超过了我们整个字符串一半的长度就肯定是不可以的。然后剩下的情况肯定都是可以的。 然后考虑怎么样可以使得交换次数最小呢: aa aa bb cc dd ff。 我们发现这组的话我们只需要交换两次,也
阅读全文 »
发表于 2023-04-24 18:56阅读:27评论:0推荐:0
摘要:题目链接 B 核心思路 真的需要加强了,看到这个最大值和最小值我们其实也需要往对应的最大值和最小值的相关操作去想,不如前缀最小值/前缀最大值或者是后缀最小值/后缀最大值。 这里一个比较直接的想法就是想找到不同的地方,然后看不可以扩展。那么怎么看是否可以扩展呢,如果是左边的话,就看当前的位置是不是小于
阅读全文 »
发表于 2023-04-22 23:59阅读:10评论:0推荐:0
摘要:题目链接 C 核心思路 这个题目其实我们可以转换为把当前串转换为完美串有多少种方案呢,也就是我们从前往后一步一步往完美串去构造我们的方案。 这个思路非常巧妙,我刚开始的思路局限于算贡献去了。 完全就脱离了正确的思路。 集合定义
阅读全文 »
发表于 2023-04-19 23:55阅读:10评论:0推荐:0
摘要:题目链接 C 核心思路 这个题目有点经典,对于括号需要肯定第一个想法是想到栈。然后看有多少可以匹配。这里我们也照样采用栈的一个思考方式。 也就是使用 来记录左括号减去右括号的数量,其实也就是已经匹配了的括号的数量。然后 表示的是还不可以确定的问号的数量。 但是有一个边界:那就是)这样是不
阅读全文 »
发表于 2023-04-18 23:32阅读:8评论:0推荐:0
摘要:题目链接 B 核心思路 这个题目我觉得很好。 首先分析下吧,如果有人需要执行操作二那么我们肯定就是给他们都打上平局是最优的。 那么如果有人需要执行操作一呢,那么我们就可以把这些需要执行操作1的都搞一起。然后是他们成一个环。这样肯定就保证了每个人都会赢上一次。 C 核心思路 这个题目的性质其实就是我们
阅读全文 »
发表于 2023-04-18 23:30阅读:16评论:0推荐:0
摘要:题目链接 C 核心思路 我们需要保证任意一个点出发都需要回文,所以我们的斜对角先必须的一致,什么意思呢:看下这个样例把。 1 0 1 0 1 0 1 0 1 比如这种(2,1)和(1,2) 就必须要和(2,3)的和(3,2)的相等。 这个斜对角的点有一个规律就是横纵坐标加起来就是相等的。 比如其中一
阅读全文 »
发表于 2023-04-12 21:22阅读:19评论:0推荐:0
摘要:题目连接 C 核心思路 这个题目乍一看是一个模拟题其实这是一个可以使用二分的题目,因为这其实只需要我们找到答案就好了。 那么二分怎么去check呢,我们可以计算出来每一位工人在x小时可以完成的任务量。 首先我们可以搞出来某一个工人擅长哪几种任务,对于这几种任务它可以一个小时就完成一个,而对于他不擅长
阅读全文 »
发表于 2023-04-07 14:19阅读:20评论:0推荐:0
摘要:题目链接 C 核心思路 其实还是得根据样例,首先我们先自己分析出来。现根据边地数目来分析。 我们其实不难发现四个端点必须得连上边。 边数为2.那么只有两条竖线。方案数是一种 边数为3,那么就一条竖线还有就是一把叉这里交换位置就是两条了。还有就是平行四边形和一条斜线,也是可以交换位置的。这里就有四种。
阅读全文 »
发表于 2023-04-02 16:04阅读:57评论:0推荐:0
摘要:题目链接 C 核心思路 其实这个操作无非就两种:插入和删除。 我们可以把重复的元素都先删除,因为这肯定是每个操作必须要做的。 我们可以从最基础的情况出发也就是怎么构造出来 的序列呢。肯定是吧 之后的序列都删除吧,然后把前面缺少的再补上去吧。 所以我们可以把前面都
阅读全文 »
发表于 2023-04-01 16:22阅读:48评论:0推荐:0
摘要:题目链接 C 核心思路 这个思路说实话有点玄学,也就是我们前面的数位按照l或者r的相同数位来填补,后面就填相同的数字也就是比如l是2345 我们可以是2999,2888,23111,23777. 这样构造好像肯定是最小的。 但是好好巩固下数位dp来做这道题还是更好的。 #include<iostre
阅读全文 »
发表于 2023-03-23 16:49阅读:13评论:0推荐:0
摘要:题目链接 A 核心思路 这个题目相当的玄学,所以如果遇到实在不会的题目。那么直接从样例入手吧,我们可以从样例发现每次改的都是开头或者最后的一个。于是大胆的猜测啊。会不会只要改动开头或者是结尾的呢。 结论:如果开头和结尾相同就不需要改,如果需要就要改。 数学归纳法: n=3,aba这种情况显然成立。
阅读全文 »
发表于 2023-03-12 14:18阅读:49评论:0推荐:0
摘要:题目链接 A 核心思路 读懂题目也就不难了。 // Problem: A. Likes // Contest: Codeforces - Codeforces Round 857 (Div. 2) // URL: https://codeforces.com/contest/1802/problem
阅读全文 »
发表于 2023-03-07 15:19阅读:24评论:0推荐:1
摘要:F 核心思路 首先我们可以知道的是只要满足了条件2和条件3必然会满足条件1.因为奇数和奇数的乘积一定是奇数。这一个比较显而易见的性质。 然后就是我们需要思考我们得使用什么方式来表示我们的条件2和条件3的状态呢。这里就运用到了状态压缩的知识,也就是我们使用二进制序列来表示我们的状态,因为总共的状态也只
阅读全文 »
发表于 2023-02-17 21:47阅读:127评论:0推荐:1
摘要:题目链接 A 这个题目其实乍一看还比较麻烦,其实很简单。其实像这种题目我们只需要构造出来一个最基本的需要操作的情况,然后可以往这种操作最多可以进行多少次这个方向来思考问题。 很显然这个遇到那种需要操作的序列最多操作一次。 // Problem: A. Two Towers // Contest: C
阅读全文 »
发表于 2023-02-16 16:41阅读:78评论:0推荐:2
摘要:题目链接 A 核心思路 这个过程还是有点绕的,但是想清楚了很简单。首先把那m+1捆在一起买,然后看还剩下多少。乘上a和b的最小值就好了。 // Problem: A. Yet Another Promotion // Contest: Codeforces - Codeforces Round #8
阅读全文 »
发表于 2023-02-07 23:45阅读:76评论:0推荐:0
摘要:题目链接 核心思路 不要傻乎乎的模拟先观察性质。(2, 3) (4,5) (6,7) (8,9). 我们可以发现a的模4都是大于1的,b的都是小于。发现这个性质之后就可以写代码了。 // Problem: A1. Non-alternating Deck (easy version) /
阅读全文 »
发表于 2023-02-03 16:55阅读:20评论:0推荐:0
摘要:题目链接 A 核心思路 我们看这个数据范围肯定很自然的想到了位运算,题目是要我们找到最小的y。首先我们需要了解的就是与运算和异或运算的实质。 与运算:一个数与上一个数结果肯定是会让这个数变小。 异或运算:相当于不进位的加法。 首先一个性质很强的就是我们的与运算,我们知道必须从x的末尾的1代表的那个数
阅读全文 »
发表于 2023-02-02 18:57阅读:80评论:0推荐:0
摘要:A-D
阅读全文 »
发表于 2023-01-28 16:23阅读:30评论:0推荐:0
摘要:题目链接 A #include <iostream> #include <cstring> #include <algorithm> using namespace std; #define int long long const int N = 1e3 + 10; int n, m; int g[
阅读全文 »