2021寒假训练
文章平均质量分 72
ccc
tzteyang
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #707 (Div.2) A - C
Codeforces Round #707 Div.2A - Alexey and TrainB - Napoleon CakeC - Going HomeA - Alexey and Train直接按题意模拟即可。#include <bits/stdc++.h>using namespace std;#define pb emplace_back#define MP make_pair#define pii pair<int,int>#define pll pa原创 2021-03-14 13:43:10 · 101 阅读 · 0 评论 -
2020牛客寒假算法基础训练营3
2020牛客寒假算法基础训练营3A-模数的世界B-内卷C-重力坠击E-买礼物A-模数的世界题意:思路:先说结论,如果a=0,并且b=0的话,那么gcd(a,b)一定是=0a = 0,并且b = 0的话,那么gcd(a,b)一定是 = 0a=0,并且b=0的话,那么gcd(a,b)一定是=0否则的话,我们一定能构造出来x和y,使得gcd(x,y) = p - 1。既然要gcd(x,y)=p−1gcd(x,y) = p - 1gcd(x,y)=p−1,那么肯定是p - 1的倍数,那就是x=k1∗原创 2021-03-13 16:46:27 · 165 阅读 · 0 评论 -
2021牛客寒假算法基础集训营2
2021牛客寒假算法基础集训营2A-牛牛与牛妹的RMQC- 牛牛与字符串borderD-牛牛与整除分块E-牛牛与跷跷板G-牛牛与比赛颁奖A-牛牛与牛妹的RMQ题意:思路:这种题目就是多种数据结构的组合题,从一种意义上说也就是模板题,要好好掌握,熟练写出。枚举所有端点获得最值的贡献显然是不可能的,那么我们就可以考虑算每个最值的贡献会发生在哪些区间。最值是具有可合并性的,就是当前区间的最值一定是包含的所有可枚举端点组成的区间之中活动的,所以我们只需要对于每次查询的k,把给定的数组排一下序,那么所有原创 2021-03-10 19:38:14 · 250 阅读 · 0 评论 -
2021牛客寒假算法基础训练营1
2021牛客寒假算法基础训练营1 C-红和蓝D-点一成零J-一群小青蛙呱蹦呱蹦呱C-红和蓝题意:思路:构造题的考虑一般是从特殊到一般,那对于树这种结构,最特殊的无非就是叶子节点,有一个颜色旁必须有一个和他颜色相同的节点,那么叶子节点和它的父节点颜色是必定要相同的。这样我们就可以用dfs,递归地从下往上逐渐到根的将个节点和它的父节点放在一起,用一个编号记录他们属于第几组,处在相同祖别的节点颜色需要一致,不同就不一致。如果我们标记的过程中,遇见了当前需要被标记的节点已经被其他点标记过了,就说明这棵原创 2021-03-04 10:42:21 · 808 阅读 · 1 评论 -
2021牛客寒假算法基础集训营4
2021牛客寒假算法基础集训营4 (9/10)A-九峰与签到题B-武辰延的字符串C-九峰与CFOPD- 温澈滢的狗狗E-九峰与子序列F-魏迟燕的自走棋G- 九峰与蛇形填数H-吴楚月的表达式I-九峰与分割序列J-邬澄瑶的公约数A-九峰与签到题签到题。直接按照题意模拟即可。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 1e5 + 7;const double eps原创 2021-03-03 17:36:43 · 311 阅读 · 1 评论 -
Codeforces Round #698 (Div. 2) C - Nezzar and Symmetric Array (找规律)
题意:定义一下对称序列,对于序列的每个元素,它和它的相反数均存在于这个序列中。然后按照题目的要求定义数组d,问你给定一个数组d,能否找到一个序列a来生成数组d。思路:一开始并没有什么思路,但是看到数据和对称的性质,手写几组数据就会发现,假如一个绝对值较大的数和两个绝对值较小的对称数做差绝对值求和的话,就会发现结果是等于这个大的绝对值的两倍的,例如4,-4,2,2,1,-1。既然是两倍,那么d数组中的数一定是偶数,并且是成对出现的,不符合这种情况的可以直接输出NO。然后,我们去找d数组的最大值dmaxd.原创 2021-01-29 13:53:55 · 166 阅读 · 0 评论 -
2020 ICPC Asia Taipei-Hsinchu Regional H - Optimization for UltraNet (生成树 + 二分)
题意:题目略长,就是让你求一棵生成树,这棵树要满足的条件时最小的边尽可能的大,同时其它的边又要尽可能的小。思路:看到求最小边最大,就可以联想到,把边权排序之后,去二分枚举哪一条才是符合要求的。每次找到一条边,因为我们是按边权值排好序的,那么我们只需要从这个最小边去顺着找,看能否组成一棵树,最后二分出来答案。根据题目的描述我们可以知道,计算这棵树的大小时,是每次我们找到这棵树的最小边然后计算这条边的贡献,(即经过这条的边的所有路径的路径和),下一次计算就把这条边去掉。换成公式来讲就是当前边的权值为w,.原创 2021-01-27 10:56:07 · 260 阅读 · 0 评论 -
2020 ICPC Asia Taipei-Hsinchu Regional B - Make Numbers (乱搞)
题意:给定你四个数,问你用乘,加,减,还有连接,四种方法可以组合成多少种不同的答案,注意连接必须和其他的操作混在一起使用。思路:用next_permutation生成全排列后,用dfs用枚举他们的组合形式,把加减作为最后的方法。参考别人的代码实现的,学习一下大佬的写法。代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 1e4 + 7;int ans,vis[.原创 2021-01-27 10:33:25 · 382 阅读 · 0 评论 -
Codeforces 703D (区间内出现偶数次的数的异或和)
题意:给定你一个长度为n的序列,然后m个询问,每次询问给出L和R,问你在这个区间内出现次数为偶数次的数(每个数只取一个),他们的异或和为多少。思路:出现次数为偶数次这些异或都会变成0,所以我们直接求区间异或和,求出来的出现次数为奇数词的数的异或和,假如我们能求得这个区间内不同的数的异或和,那他们二者异或一下就可以得到我们想要的答案了。然后问题就变成了怎么求区间内不同数的异或和呢。m个询问,我们可以离线处理,按照右端点从小到大的顺序排序,然后每次只去更新距离当前右端点r最近的值的位置,再把这个位置之间的.原创 2021-01-27 10:24:20 · 424 阅读 · 0 评论 -
三分专题 几道练习题
我理解的三分算法其实就是用来解决一类这种求解函数的极值的方法。可以用来单峰或者单谷函数求极值点的问题。我们确定下来左端点L和右端点R后,我们令mid = L + (R - L) / 3,midmid = R - (L + R) / 3,然后比较这两处的函数值的大小, 如果我们求得是极大值,那么假如此时F(mid) < F(midmid),那么就说明小的那部分外面的我们其实就可以舍去不要了,同理求极小值的话,就是大的部分那外面就可以不要了。这样的话,最后通过不断的逼近,我们就可以得到极值点的值.原创 2021-01-07 14:30:24 · 453 阅读 · 1 评论 -
2020 Jiangsu Collegiate Programming Contest C D H J 题解
明天更原创 2021-01-08 21:50:10 · 998 阅读 · 0 评论