- 博客(8)
- 收藏
- 关注
原创 Codeforces Round 686 (Div. 3)D. Number into Sequence
这道题首先我们可以得出,如果一个数字他是一个素数的话,那么他肯定不能够被分解为其他两个数字的乘积,所以因此想到了遍历当前的输入数据的因数,如果找到了一个因数,那么为了让我们的最终答案越长,那么我们就希望加入答案的数据尽可能的小,那么我们就可以一直添加当前这个因数,只要遇到了当前剩余的部分无法整除这个因数的时候就直接break掉,每次取因数都选取最后能得到的最小值,并且存储当前的因数,最后直接输出结果即可。
2025-08-17 21:09:47
244
原创 Codeforces Round 690 (Div. 3)E2. Close Tuples (hard version)
首先,我们可以回顾一下简单版本,简单版本只需要我们找到所有的三元组里面最大值减去最小值的差值小于等于2的数量,首先我们对整个数组进行升序排序,然后从左到右进行遍历,把当前索引当作三元组的最小值,然后使用二分查找找到最后一个大于等于当前索引+2的下标,然后使用高中的组合数学知识进行计算最后累加结果即可。为了避免超时,那么我们就可以先预处理一下,利用预处理好的阶乘和逆元阶乘,可以在 O (1) 时间内计算组合数 C (n,k)。
2025-08-17 20:55:25
170
原创 Codeforces Round 954 (Div. 3)D. Mathematical Problem
首先我们看到这个题的第一步就可以想到我们应该尽量使用加法而不是乘法,然后我们分析只能使用n-2个符号,因此我们需要把两个相邻的数字给拼接起来形成一个数字,那么如何得到改拼接的两个数字呢,这时候一看数据范围只有20,因此我们可以使用双层循环,第一层循环用来遍历n-1个拼接数字的情况,即cnt=s[i]+s[i+1],内层循环就拿来对填充符号的情况进行贪心,对此进行分类讨论:1.遍历到的数字>1 ,2.遍历到的数字=0 ,3.遍历到的数字=1。
2025-08-17 20:27:22
167
原创 Codeforces Round 1032 (Div. 3), problem: (D) 1709
的元素对通过交换操作调整。由于两个数组的元素覆盖了从 1 到 2n 的所有整数,排序后两数组元素顺序符合题目条件,保证了通过这些操作可以实现题目要求的严格升序和大小关系。具体做法是先使用冒泡排序对数组 a 和数组 b 进行独立排序,过程中记录所有交换操作;排序完成后,再遍历所有位置,将不满足。首先将两个数组分别排序,使它们各自严格递增,同时通过在对应位置交换元素保证。
2025-08-10 18:15:38
182
原创 Codeforces Round 1017 (Div. 4)E. Boneca Ambalabu
直接进行计算的话会导致O(n^2)的复杂度,思考了按位与或的性质,考虑到使用二进制优化状态压缩,对于每一个数字,使用一个数组存储所有的数字,每一个索引下存储了该位有多少个,比如[2,3],在数组里面就会存储为num[0]=1,num[1]=2;
2025-08-10 17:58:16
206
原创 Codeforces Round 921 (Div. 2), problem: (B) A Balanced Problemset?
根据中国剩余定理方程有解的充要条件是:gcd(n, l) | b。核心方程是:n * i + mod ≡ 0 (mod l)也就是说 gcd(n, l) | (-mod)递减枚举到 1,每次检查是否存在这样的。因此我们可以得到优化后的solve函数。题目要求我们给定两个数。我们需要找到一个最大的。
2025-08-10 17:42:56
141
原创 c语言函数实现数组元素最大值最小值的交换
先看题目:从键盘输入n个整数,用函数编程实现查找其最大值和最小值,并互换它们在数组中的位置。然后我们开始写找出最大值与最小值的函数。最后主函数打印出交换后的数组。首先我们定义一个交换函数。
2023-11-02 21:36:59
1378
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅