- 博客(17)
- 收藏
- 关注
原创 Tarjan算法(割点)模板
但是这里有个问题,如果最小的一条边是桥的话。我们删除后,会出现两个新的连通块。如果是奇数边,我们考虑将最小的一条边删除。果图是偶数条边,那么一定可以全取到。用tarjan算法求割点和桥。
2024-11-06 22:02:47 145
原创 Kruskal 重构树模板
每第⼀次到达⼀个点将获得点权等值的声望加成。经过⼀条边需要满⾜边权等值的最低声望限制。多次给出起点和初始声望,询问能达到的最⼤声望。向上找到第⼀条不能通过的边(即,该边 下⾯的⼦树的 叶⼦点权和 加上 初始声望 ⼩于该边边权),把 下⾯⼦树的 叶⼦点权和 加上 初始声望 即为答案。:原图中两个点间所有路径上的边最大权值的最小值 = 最小生成树上两点简单路径的边最大权值 == Kruskal重构树上两点 LCA 的点权。kruskal重构树模板是基于kruskal最小生成树的一种算法。
2024-11-04 21:52:21 308
原创 2024百度之星初赛第一场 跑步
跑步的终止是当所以有都同时到达终点,不难想到,这时一号跑的圈数是1~n的最小公倍数,设这个数为p,所以第i个人跑的圈数则是p/i。第i个人与第j个人碰面的次数为p/i-p/j。我们可以用质数筛,筛出1~n的所以质数,然后在求每一个质数的最大次数,这个时间复杂的接近O(n)。这个题的难点有两个,第一个是在O(n)的时间求出1~n的最小公倍数p。最后计算总的碰面次数就可以得到答案了。第二个是求出每一个人跑的圈数。
2024-06-13 20:38:00 637
原创 Codeforces Round 836 (Div. 2) C. Almost All Multiples
感觉这个题的这个构造方式很巧妙,所以记下来(模仿的大佬的代码,大佬就是强QWQ)
2024-06-01 20:56:09 245
原创 The 2024 ICPC Kunming Invitational Contest E - Relearn through Review
把注释的那一行去掉就变成O(n*logn)的算法了。
2024-05-27 21:11:36 822
原创 在数字较大时快速计算排列数A(n, m)与组合数C(n, m)取模质数后的结果
(2)p1=2 ==> 可以对区间[1,2]进行操作,假设区间[1,2]为2 1那么Alice的最优操作是将1移动到第一位,那么Bob输,否则无论Alice如何操作,都会将一个大于等于2的数移动到第一位,那么Bob只需再将2移动到第一位,就会导致Alice使用2次2,导致Alice输,即Bob赢,共有C(8,1)*A(8,8)。题意:如果p1=k,那么可以对区间[1,k]进行任意顺序重排列,谁先用两次相同的p1,谁就输。分析Bob赢的种数:k=3 ==> C(7,1)*C(6,1)*A(7,7)
2024-05-09 16:52:06 491 1
原创 Educational Codeforces Round 162 (Rated for Div. 2) D. Slimes
【代码】Educational Codeforces Round 162 (Rated for Div. 2) D. Slimes。
2024-04-25 19:23:09 120 1
原创 Codeforces Round 939 (Div. 2) D. Nene and the Mex Operator
题目求的是你可以得到的最大的数组a的和,操作数,以及具体的操作。举个列子,对于样例3,a数组为:1 100 2 1,我们dfs得到的最佳选择方法为0,0,1,1,就是只对[3,4],这个区间进行mex,最终得到了1,100,2,2。然后,我们可以看到这个题目的n特别小,我们直接暴力求解,2^18才只有262144,用dfs找选择进行mex操作所有区间,每一个元素选与不选,0表示不选,1表示选。注意,如果dfs得到的选择数组是1,0,1,1,那么要进行的mex操作的区间为[1,1],[3,4]。
2024-04-16 21:18:15 595 3
原创 Codeforces Round 904 (Div. 2) C. Medium Design
题意:选任意个区间,对区间的元素加1,然后求进行这些操作后数组a最大值于最小值的差值。
2024-03-28 20:34:02 170
原创 Codeforces Round 926 (Div. 2) D - Sasha and a Walk in the City
题意:这个题的题意我看了好久好久才看懂的QWQ,就是在这个树上选择一些坏的点,如果这种选法使得树上没有任何一条路径上有三个及以上的坏的点,那么这种选法就是合法的,题目要求的是一共有多少种选法,答案对998244353取模。
2024-03-28 11:49:18 155
原创 Codeforces Round 936 (Div. 2) D. Birthday Gift
这个四位二进制数组的最高位即第四位的值分别为0,1,0,1,0,0,1,1,0,我们想要让每一子段异或的结果都为0,就要让每个子段的1的个数为1,所以我们这样划分(0),(1,0,1),(0),(0),(1,1),(0),将这个数组a划分之后,相当于是把这个子段的数绑定起来,所以我们直接用这个子段异或后的结果来代替这个子段,这样给我们的下一次迭代带来的巨大的方便。所以对于这个题,我们可以从高位开始迭代,为了方便起见,我们将x+1,让后求小于x+1的值。这是一个有关位运算的题目,写过这个题目(
2024-03-26 16:21:09 475
原创 二分算法讲解(二分//+二分答案)
注意 这两种写法的mid的取法和区间的取舍方式是配套搭配的,如果混淆使用就可能造成死循环的出现。对于整数域上的二分,需要注意终止边界、区间取舍时候的开闭情况,否则有可能会造成死循环的出现。r = mid-1, l=mid, mid = (l+r+1)>>1 搭配使用。r = mid, l=mid+1, mid = (l+r)>>1 搭配使用。对于实数域上的二分,需要注意精度问题,否则得出的答案可能不符合题目要求。//二、实数域上的二分。
2024-03-24 14:59:17 142
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人