算法
文章平均质量分 60
①算法、数据结构模板学习笔记。②书本与题单按知识点刷题系列。
小哈里
愿你被世界温柔以待
展开
-
C++ 点(.)操作符和箭头(->)操作符
当定义的对象为实体时,使用点(.) 访问struct node{ int x, y;}t;t.x = 1;t.y = 2;当定义的对象为指针时,使用箭头(->)访问struct node{ int val; node *left, *right;};node* root;root->left = tmp;root->left->val = 5;即点左边必须为实体,箭头左边必须为指针...原创 2021-11-21 09:23:17 · 1675 阅读 · 0 评论 -
P问题、NP问题、NPC问题和NP-Hard问题,相关概念与题目
+ **约化**:问题A约化为问题B的含义就是,可以用问题B的解法解决A。**(变成更复杂更一般化的问题)**例如我们有问题A:求解一元一次方程bx+c=0,问题B:求解二元一次方程ax^2+bx+c=0。如果我们知道问题B的解法,那么一定可以知道问题A的解法,因为只要我们令a=0,问题B就和问题A等价,所以我们可以说“问题A可约化为问题B”。很显然当我们说“问题A可约化为问题B”,那么**问题B的时间复杂度一定高于或者等于问题A的时间复杂度**。其次约化还具有一个重要性质:约化具有传递性。也就是说如原创 2022-11-02 00:15:35 · 2520 阅读 · 0 评论 -
Luogu P3379 【模板】最近公共祖先(LCA),树链剖分求LCA模板
接下来 N-1N−1 行每行包含两个正整数 x, yx,y,表示 xx 结点和 yy 结点之间有一条直接连接的边(数据保证可以构成树)。第一行包含三个正整数 N,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。故输出依次为 4, 4, 1, 4, 44,4,1,4,4。第一次询问:2, 42,4 的最近公共祖先,故为 44。第四次询问:1, 21,2 的最近公共祖先,故为 44。第五次询问:4, 54,5 的最近公共祖先,故为 44。...原创 2022-08-17 19:59:54 · 540 阅读 · 0 评论 -
【hdu6547】Tree(树链剖分, 线段树区间根号)
problemalgorihtm1、树链剖分什么是树链剖分(重链剖分)?树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。对于树上的一个点,与其相连的边中,连向的节点子树大小最大(重儿子) 的边叫做重边,其他的边叫轻边。重边连成的边叫做重链。下图中黑色加粗的为重链。树链剖分(重链剖分)如何实现?重链剖分的实现是由两次dfs来实现的,第一次dfs处理出每个点的重儿子son[],子树大小size[],深度d[]及父节点f[]。 而第二遍dfs则是处理出每个点所在重链的链头top[原创 2021-10-18 19:22:58 · 687 阅读 · 0 评论 -
洛谷P3369 【模板】普通平衡树(STL做法:vector&multiset)
problemsolution1 - ACvector可以AC。lower_bound找第一个大于等于x的,upper_bound找第一个大于x的。#include<bits/stdc++.h>using namespace std;int main(){ ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T; cin>>T; vector<int>a; while(T--){ int原创 2021-09-23 15:32:00 · 805 阅读 · 0 评论 -
2021下半年ICPC各类赛事时间日程
ICPC预选赛 共2站网络预选赛名额分配(可以关注微信公众号ICPCNews)网络赛1:9.19网络赛2:9.25PS:网络赛没有牌子,决定后面赛站的学校名额分配。现场赛1-50名2个,50-130名1个,网络赛1-50名4个,50-130名3个(不含外卡)。ICPC区域赛 共7站2021-2022年度(今年9.1-明年8.31),ICPC办赛日期目前暂定如下:南京:11.06-07济南:11.13-14沈阳:11.20-21上海:11.27-28其他赛站(昆明、西安、澳门)还在计划原创 2021-09-21 21:21:46 · 8488 阅读 · 1 评论 -
【2021牛客暑期多校训练营7】xay loves trees(dfs序,维护根出发的链)
F xay loves trees题意:给出两棵树,由这两棵树根据规则可以生成一个图,规则如下:如果u , v在第一棵树中满足其中一个点是另一个点祖先且最终所有所选的点都互相联通,在第二棵树中满足两个点都不是另外一个点的祖先,则u, v之间连一条边。求最后生成的图中最大的团。(团为子图中的完全图)思路:原题来源,Codeforces Round #722 (Div. 1) C. Trees of Tranquillity,在树1加了一个联通的条件,改了好久都没改出来。首先观察到一个比较重要原创 2021-09-12 19:02:02 · 573 阅读 · 0 评论 -
【HDOJ7055】Yiwen with Sqc(字符串,区间出现次数平方和,两次差分)
1012 Yiwen with Sqc题意:给出一个字符串,计算每个字母在每个区间出现次数的平方和。思路:可以发现不同字母之间没有影响,所以分别考虑每一种字母,比如考虑 ‘a’ , ‘a’ 在字符串中一共出现cnt次,第i次的位置为 p[i](p[0]=0, p[cnt+1]=n+1),记len[i] = p[i+1]-p[i],即两个相邻 ‘a’ 之间的距离。首先固定左端点为1,移动右端点,可以发现答案=sum{k=1->cnt, len[k]*k^2},因为右端点在两个字母间移动时原创 2021-09-12 19:01:21 · 585 阅读 · 0 评论 -
【2021牛客暑期多校训练营5】K King of Range(单调队列)
K King of Range题意:给出一个长为n的序列,m次操作,每次操作求对于一个指定的k,原序列存在多少个连续子序列,满足该区间内最大值减最小值严格大于k。思路:令 Ri 为 l=i 时,满足极差大于 k 的最小的 r,如果不存在则记 Ri = n+1。那么显然有 R1 ≤ R2 ≤ … ≤ Rn。首先可以用 Set 之类的 STL 工具来快速维护极差,所以可以在均摊 O(log n) 的时间求 Ri。一个线性的做法:注意到因为区间端点都是单调的,所以可以维护两个单调队列,其中一个递原创 2021-08-27 21:02:04 · 571 阅读 · 0 评论 -
【2021牛客暑期多校训练营5】Double Strings(二维字符串dp)
D Double Strings题意:给出两个字符串A, B, 在其中选出两个等长的子序列(可以不连续)a, b,满足a的字典序严格小于b,求这样的方案有多少个,答案mod(1e9+7)思路:好的方案的构成是“一段相同的前缀+一个不同字符(a比b小)+长度相同的任意后缀”。枚举不同的字符在两个序列中的位置。用dp[i][j]表示只考虑 A 中的前 i 个字符和 B 中的前 j 个字符时的相同的子序列的个数,转移可以 O(1),这样可以统计出相同的前缀个数,这部分是 O(|s|*|t|) 的。原创 2021-08-27 21:01:20 · 597 阅读 · 0 评论 -
【HDOJ6986】Kanade Loves Maze Designing(暴力,dfs树)
1002 Kanade Loves Maze Designing 35.26%(880/2496)题意:给出一棵n个点的树,每个点有权值ci,记A(i,j)表示点i和j之间路径上的不同权值个数,求f(i,x)=∑(j=1->n) A(i,j)*x^{j−1},x=19560929, mod1=1e9+7, mod2=1e9+9.思路:因为n<2e3,可以n^2做,所以直接dfs暴力把所有的a[i][j] 枚举出来即可,O(n)枚举每个点,对于每个点dfs到其他所有点跑一遍O(n),原创 2021-08-27 21:01:04 · 535 阅读 · 0 评论 -
【HDOJ6992】Lawn of the Dead(线段树×, 模拟大法好√)
1008 Lawn of the Dead 18.41%(405/2200)题意:给出n*m的地图,k个地雷的坐标,从(1,1)出发,只能向下或向右走,求能走到多少个点。思路1:考虑所有点的个数减去不能到达的点的个数,根据题意,有地雷的地方是不可以到达的。由于僵尸只会向右和向下走,当某个点的左边和上方都不可达时,该点不可达,并会对自己右边的点和下方的点造成影响。由于空间很大但地雷数有限,可以从上往下逐行对每一行的地雷排序后进行处理。对每个地雷,找到从自己的右上角点(x-1, y+1) 开始的原创 2021-08-25 20:43:03 · 581 阅读 · 0 评论 -
【2021牛客暑期多校训练营4】Average (二分答案,区间/子数组最大平均值,)
J Average题意:给出长为n,m的序列ai和bi,定义nm的矩阵wij=ai+bj,求一个大小>=xy的子矩阵的平均值最大。思路:因为n的范围为1e5,直接n*m计算出wij就已经超时,所以考虑贡献。从wij的矩阵平均值公式可以推出平均值分别为a和b的最大平均值相加。所以答案就是分别对 a 和 b 对应的区间求平均值然后加起来,问题转化成了 : 找 a 的一个长度至少为 x 的平均值最大的子区间和 b 的一个长度至少为 y 的平均值最大的子区间二分答案 S 后, 令 a[i]原创 2021-08-25 20:42:45 · 631 阅读 · 0 评论 -
【HDOJ6958】KD-Graph(并查集)
1009 KD-Graph题意:给出一张n个点m条边的加权无向图和一个整数K,求一个数字D可以将图分为K组,组内任意两点存在路径且小于等于D,组外不存在小于等于D的路径。不存在D输出-1。思路:将边按权值从小到大排序,每一阶段取出同权值的所有边,将这些边的端点用并查集两两合并,若某一阶段的全部边合并完,并查集数量为k,则当前阶段合并边的权值就是答案,否则输出-1。#include<bits/stdc++.h>using namespace std;typedef long原创 2021-08-25 20:42:23 · 553 阅读 · 0 评论 -
【HDOJ7080】Pty hates prime numbers(容斥原理)
problemPty hates prime numbersTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 293 Accepted Submission(s): 87Problem DescriptionPty thinks prime numbers are extremely annoying numbers. Specif原创 2021-08-22 23:01:41 · 692 阅读 · 0 评论 -
2021 年百度之星·程序设计大赛 - 复赛 1002 Add or Multiply 1(第2类斯特林数)
problemsolution想到了是n个小球放到m个盒子里以后,剩下的就是板子了#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 3010;const int mod = 1e9+7;LL fac[maxn];LL init(){ fac[0] = 1; for(int i = 1; i < maxn; i++)fac[i]=fac[i-1]*i%m原创 2021-08-22 22:16:52 · 602 阅读 · 0 评论 -
2021 年百度之星·程序设计大赛 - 复赛 1001 Palindrome(结论,奇偶性)
problemsolution看到这个题第一个猜结论就是奇偶性,简单验证一下会发现k是奇数就Yes,偶数就No。其实也不难证明,偶数的时候,对于任意一段长为k的回文串,往右边移动一个的新的串,一定不是回文,奇数就可以构造出来。然后特判的话,因为要两个字母n==1就不行了,n==2的时候,如果k也是2,那两个不同字母也不行。剩下的就是k为1或者k和n相等都可以,其余的奇偶性判断就行。#include<bits/stdc++.h>using namespace std;int m原创 2021-08-22 21:16:17 · 627 阅读 · 0 评论 -
【HDOJ7079】Pty loves lines(计算直线的交点方案数,打表)
Pty loves lines题意:平面上有n条直线,且无三线共点,问这些直线能有多少种不同交点数,输出方案,n<=700思路:原题是HDOJ1466,不过数据只有20。首先考虑原本简单情况下的做法是dp:我们知道,n条直线互不平行且无三线共点的最多交点数max=1+2+……(n-1)=n(n-1)/2。假设一共有n=a+b条直线(即n条直线分成2组,分别为a条和b条)则总的交点数= a内的交点数+b内的交点数+a,b之间的交点数我们将n条直线分为两部分,平行的直线数目r,和不原创 2021-08-22 18:15:34 · 840 阅读 · 0 评论 -
【HDOJ6957】Maximal submatrix(单调栈,最大子矩阵面积)
1008 Maximal submatrix题意:给出一个n*m的矩阵,求一个面积最大的子矩阵满足子矩阵的每一列都是单调不递减的思路:转化为01矩阵 每个位置1代表该位是否比上面一位小,然后用单调栈求最大01矩阵 复杂度O(n^2)#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 3e3+10;int a[maxn][maxn], b[maxn][maxn],原创 2021-08-18 16:12:28 · 579 阅读 · 1 评论 -
【HDOJ6955】Xor sum(异或前缀和,01字典树)
1006 Xor sum题意:给出一个长度为n的序列,求一个最短连续子序列满足异或和大于等于k。n<1e5。思路:参考CF665E,求序列a中有多少个异或和大于等于k的子序列,枚举所有的子序列,维护最小长度即可。首先因为区间异或和,且异或满足性质a^b^a==b,所以可以想到异或前缀和,s[l~r] = s[r]^s[l-1]。因为01字典树可以查找树中与x异或后最大的值,所以维护异或前缀和的01字典树。此时枚举靠右的那个数,字典树每次保存范围内最靠右的点的位置。字典树每次查找的时原创 2021-08-18 16:11:20 · 712 阅读 · 0 评论 -
【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
J Jewels题意:给出n个点的位置x,y,z以及速度v,从第t=0秒开始打捞,打捞点i的代价为x^2+y^2+(z+t*v)^2,求打捞所有点的最小代价。思路:所有的宝石肯定都在 0~n-1 这 n 个时刻被挖掉,那么问题就变成一个最小权匹配了,一边是时刻,一边是宝石,边权就是在这个时刻挖这个宝石所消耗的体力值。最小匹配权,可以用KM(即匈牙利算法),也可以跑费用流。但是神仙们直接乱搞,,反正就是暴力找增广路找到不能更优为止,这样的代码是最短的。#include<bits/st原创 2021-08-18 16:02:20 · 587 阅读 · 0 评论 -
【2021牛客暑期多校训练营6】H Hopping Rabbit(扫描线)
H Hopping Rabbit题意:#include<bits/stdc++.h>using namespace std;const int maxn = 5e5+10;//扫描线:从左往右扫struct Scan{ int l, r, x;};vector<Scan>v[maxn]; //v[i]:第i列的线段(自带桶排序)void add(int x1, int x2, int y1, int y2){ v[x1].push_back({y1,y2,1原创 2021-08-18 15:55:57 · 571 阅读 · 0 评论 -
【HDOJ7059】Counting Stars(线段树,区间加,乘,标记)
1004 Counting Stars题意:给出一个长为n的序列(1e5),支持3种操作:1:查询[l,r]的区间和2:修改[l,r]中每个数,都减去lowbit(x)3:修改[l,r]中每个数,都加上2^k, 2^k<=ai思路:对于操作2,减去lowbit(x)相当于去掉最后一位的1。可以发现,不断删1后,一个数最多删32次就会变为0,此后修改查询都是0。所以我们可以打个tag表示该区间是否所有数为0,用标记下传维护,剩余的情况暴力修改。对于操作3,加上2^k相当于第一位1左原创 2021-08-18 15:43:03 · 672 阅读 · 0 评论 -
【HDOJ7058】Ink on paper(生成树,或二分答案建图+并查集联通性)
1003 Ink on paper题意:给出平面中的n个点,每个点每秒向外扩散0.5cm,求多少时间后所有点的点会连在一起,输出时间的平方。思路:其实是很简单的最小生成树板子,Kruskal或Prim都行大概O(nlogn),但是比赛的时候没想到。然后写了个二分答案,二分时间的平方,每次n^2枚举所有的点对建图,并查集维护联通性check时间是否可行,复杂度大概O(n^2logn),防止超时可以提前预处理出所有点对之间的距离,避免每次重新算一遍。开始用 double 二分的,精度一直WA原创 2021-08-18 15:41:36 · 953 阅读 · 0 评论 -
【2021牛客暑期多校训练营9】E Eyjafjalla (倍增,dfs序,主席树)
E Eyjafjalla题意:题意:给定一个以1为根的有根树,孩子的点权小于父亲的点权。 多次询问,每次询问包含x节点的权值范围为[l, r] 的极大连通块的大小。思路:病毒传播可以看作两个阶段,第一个阶段先上升到最高的一个节点p(p的温度大于r),第二阶段感染p的子树中所有温度大于l的城市。第一阶段可以通过倍增法求得p第二阶段相当于在p的子树中查询权值大于l的节点个数,根据每个节点的dfs序建立可持久化线段树, 然后在线段树上查询即可。时间复杂度O(n log n)。#include原创 2021-08-18 15:35:37 · 587 阅读 · 0 评论 -
【牛客2021暑假多校10】Train Wreck(出栈顺序,建树,优先队列维护)
F Train Wreck题意:给出长为2n的括号序列,()分别表示放入站台和拿出,以及n辆火车的颜色。求构造一个放入序列,满足不存在同一时刻站台内的颜色序列相同思路:将栈操作视为树,要求转化为给每一个节点染色,使得从根到每一个节点的链所构成的颜色序列两两不同。注意到两个都在第i 层的节点,如果它们的父亲不同,则从根到它们父亲的链所构成的颜色序列不同,这使得从根到它们的链所构成的颜色序列一定不同。(因为删去序列最后一项后得到的序列不同)因此,条件可以转化为每个点的k个儿子颜色互不相同原创 2021-08-18 15:30:20 · 572 阅读 · 0 评论 -
【HDU7068】 Dota2 Pro Circuit(双端队列,模拟)
题意:n只队伍参加两轮比赛,给出第一轮结束后每个队的分数,以及第2论第i名能获得的分数。求第i只队伍的最好名次和最差名次(允许同分名次并列)思路:对于最高排名,先给它最大的得分,再给剩下的n-1个队,去找能否让其得分<=sc,把所有的都找出来,答案就是补集。对于最低排名,先给它最小的得分,在去剩下的n-1个队里找,如果得分直接比它大,那没救了直接更新,如果得分比sc小,就去分数里从大到小找,知道第一个加起来都比sc小的就用它即可。#include<bits/stdc++.h&原创 2021-08-18 13:45:57 · 561 阅读 · 0 评论 -
CF #738(div2)D2. Mocha and Diana (Hard Version)(贪心,并查集)
problemD2. Mocha and Diana (Hard Version)time limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThis is the hard version of the problem. The only difference between the two versions is the constraint on原创 2021-08-16 21:23:06 · 725 阅读 · 0 评论 -
CF #738(div2)D1. Mocha and Diana (Easy Version)(暴力,并查集)
problemD1. Mocha and Diana (Easy Version)time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThis is the easy version of the problem. The only difference between the two versions is the constraint on n原创 2021-08-16 20:51:37 · 749 阅读 · 0 评论 -
【luogu3834】【模板】可持久化线段树 2(主席树),静态区间第K小值
problemsolution题目:有n个数,多次询问一个区间[L,R]中第k小的值是多少。思路:查询[1,n]中的第k小值:先对数据进行离散化,然后按值域建立线段树,线段树中维护某个值域中的元素个数, 在线段树的 每个结点上记录这一个值域中的元素个数 ,那么要寻找第k小值,从根结点开始处理,若左儿子中表示的元素个数大于等于k,那么我们递归的处理左儿子,寻找左儿子中第k小的数,若左儿子中的元素个数小于k,那么第k小的数在右儿子中,我们寻找右儿子中第k-(左儿子中的元素数)小的数。查询原创 2021-08-16 17:30:26 · 579 阅读 · 0 评论 -
【luogu1337】【JSOI2004】平衡点 / 吊打XXX(模拟退火)
problemsolution题意:给出n个重物的坐标和重量,他们通过一根绳子穿过正上方的洞连在桌面上的某个绳结处,求该绳结的坐标位置。思路:根据物理知识:当系统处于平衡状态时,系统的总能量最小。此时系统的总能量是等于各个物体的重力势能,在质量一定时,即要求物体离地最近,离桌子最远。那么,也就是绳子在桌子上的距离尽量的小。模拟退火,每次随机一个桌子上的点,判断n个洞口到他的总距离和是大了还是小了,找最小的即可。其实就是之前写过的“星星还是树”,就是空间n个点,找距离和最近的点即可。#原创 2021-08-11 19:26:37 · 525 阅读 · 0 评论 -
AcWing进阶算法课Level-4 第六章 搜索 (模拟退火,爬山)
AcWing进阶算法课Level-4 第六章 搜索模拟退火AcWing 3167. 星星还是树110人打卡AcWing 2424. 保龄球78人打卡AcWing 2680. 均分数据72人打卡爬山法AcWing 207. 球形空间产生器51人打卡代码AcWing 3167. 星星还是树/* 模拟退火功能:当一个问题的方案数量极大(甚至是无穷的)而且不是一个单峰函数时,我们难以准确求出具体的解,可以通过多次迭代,它可以不断地接近最优解。实现:在某一给定初温下,通过缓慢下降温度参数,使原创 2021-08-11 19:03:27 · 839 阅读 · 0 评论 -
【luogu5490】【POJ1151】【模板】扫描线 /Atlantis (求矩形面积并)
Problemsolution扫描线:假设有一条扫描线从一个图形的下方扫向上方(或者左方扫到右方),那么通过分析扫描线被图形截得的线段就能获得所要的结果。该过程可以用线段树(维护区间信息)进行加速。求矩形面积并:矩形的面积简化为 ∑ 截线段长度×扫过的高度。对于扫过的高度只需要将直线存起来按照高度h从下到上排序,每次的 (line[i+1].h-line[i].h) 就是扫过的高度。对于当前的截线段长度, 为了快速计算出截线段长度, 我们可以将矩形的横边附上不同的长度(下边权1,上边原创 2021-08-06 14:10:56 · 593 阅读 · 0 评论 -
2021 年百度之星·程序设计大赛 - 初赛二 1003 魔怔(并查集,联通性,欧拉回路)
problemsolution发现除了起点和终点,剩下所有点周围的边都会被恰经过偶数次,所以这些点初始连向了偶数条白边。考虑由白边连接形成的图,每个连通块中度数为奇数的点一定为偶数个。所以起点所在连通块最多有两个点度数为奇数,且包含起点,不包含起点的连通块不能有点度数为奇数。(或者由欧拉回路的性质可得,如果有大于两个度为奇数的点一定是不能完成任务的)所以每个包含白边的连通块都可以一笔画,每条白边都恰经过一次且不会经过黑边。答案即为 白边个数 +2 ( 包含白边或包含起点的连通块个数 -1)。原创 2021-08-03 20:06:24 · 954 阅读 · 0 评论 -
2021 年百度之星·程序设计大赛 - 初赛二 1001 签到(找规律,快速幂)
problem签到 Accepts: 6141 Submissions: 13643Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description给 a,ba,b ,每次 a,ba,b 会变为 a+b,a-ba+b,a−b ,问 kk 次之后变成了哪两个数,对 998244353998244353 取模,多组数据。Input第一行一个正整数 T(1\leq原创 2021-08-03 16:05:45 · 663 阅读 · 0 评论 -
这是一份简易的ACM模板
1、基础算法__int128typedef __int128 LL;inline __int128 read(){ __int128 x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}inline void p原创 2021-08-02 22:04:05 · 1388 阅读 · 1 评论 -
AcWing进阶算法课Level-4 第七章 基础算法
AcWing进阶算法课Level-4 第七章 基础算法启发式合并AcWing 2154. 梦幻布丁73人打卡AcWing 3189. Lomsat gelral54人打卡manacher算法AcWing 3188. manacher算法92人打卡最小表示法AcWing 158. 项链58人打卡构造AcWing 516. 神奇的幻方40人打卡AcWing 2268. 时态同步39人打卡打表AcWing 1412. 邮政货车20人打卡代码AcWing 2154. 梦幻布丁//题意原创 2021-07-30 21:07:15 · 1223 阅读 · 0 评论 -
【CF 600E】Lomsat gelral(树上启发式合并, dsu on tree, 静态链分治,模板题)
Algorithm名称:树上启发式合并, dsu on tree, 静态链分治用处:一般用来解决一类不带修改的子树查询问题核心思想为:利用重链剖分的性质优化子树贡献的计算。前置知识:启发式合并,最常见的就是并查集的按秩合并了,有带按秩合并的并查集中,对于两个大小不一样的集合,我们将小的集合合并到大的集合中,而不是将大的集合合并到小的集合中。让高度小的树成为高度较大的树的子树,这个优化可以称为启发式合并算法。相关题目:给出一棵 n 个节点以 1 为根的树,节点 u的颜色为 C[u],现在对于每个原创 2021-07-28 20:44:37 · 724 阅读 · 0 评论 -
CF #727(div2)B. Love Song,前缀和
problemB. Love Songtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputPetya once wrote a sad love song and shared it to Vasya. The song is a string consisting of lowercase English letters. Vasya made原创 2021-06-24 15:53:38 · 761 阅读 · 0 评论 -
CF #724(div2)B. Prinzessin der Verurteilung, BFS枚举
problemB. Prinzessin der Verurteilungtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputI, Fischl, Prinzessin der Verurteilung, descend upon this land by the call of fate an — Oh, you are also a trav原创 2021-06-24 15:42:05 · 624 阅读 · 1 评论