随笔分类 -  Algorithm

上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要:一般使用kruskal(克鲁斯卡尔)(mlogm) 对于稀疏图,用朴素prim(n^2) prim:每次选择和当前已经构建出的连通块相连,且权重最小的边,加入当前连通块。 一共需要扩展(n-1)次 只能处理一个连通块,不能“生成森林” 例题:https://www.acwing.com/proble 阅读全文
posted @ 2022-09-13 09:54 80k 阅读(52) 评论(0) 推荐(0) 编辑
摘要:主要思路为,在Floyd过程中,找到环中最大值为k的最小环 解释: 以dp的视角看待Floyd算法,在循环到k时,已经获得了经过前k-1个点的最短路径。 设环中最大标号为k,则路径可以表示为:i->k->j->...->i i->k和k->j为直接相连,j->...->i为通过小于标号k的点相连。 阅读全文
posted @ 2022-09-12 19:46 80k 阅读(32) 评论(0) 推荐(0) 编辑
摘要:https://atcoder.jp/contests/abc267/tasks/abc267_f 此题目首先有结论:距离树上任意一点距离最远的点,是直径的其中一个端点 https://www.cnblogs.com/ydUESTC/p/16664485.html 故对于一个查询u,k如果存在一个答 阅读全文
posted @ 2022-09-07 11:20 80k 阅读(67) 评论(0) 推荐(0) 编辑
摘要:对于一棵树,定义点的距离为二者的最短路径长度,可以有 树的直径的端点为(L,R) 对于任意一点u,L或R为距离u最远的点。 证明: https://atcoder.jp/contests/abc267/editorial/4753 阅读全文
posted @ 2022-09-07 10:35 80k 阅读(32) 评论(0) 推荐(0) 编辑
摘要:踩坑记录: 对于max_element(begin,end); 如果begin==end,则当前查找的区间范围为0, 此时,会直接返回begin,导致答案(可能)错误。 阅读全文
posted @ 2022-09-07 09:39 80k 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1、AcWing基础课: 线性筛:(与线性筛质数对应) phi[1] = 1; for (int i = 2; i <= n; i ++) { if (!st[i]) { primes[cnt ++] = i; phi[i] = i - 1; } for (int j = 0; primes[j] 阅读全文
posted @ 2022-09-06 21:45 80k 阅读(45) 评论(0) 推荐(0) 编辑
摘要:例题: https://www.acwing.com/problem/content/description/922/ 代码: #include<bits/stdc++.h> using namespace std; int m, n; bool A_M[510][510]; int dis[510 阅读全文
posted @ 2022-09-05 16:23 80k 阅读(39) 评论(0) 推荐(0) 编辑
摘要:例题: https://www.acwing.com/problem/content/description/1131/ 1、仅用dis数组记录,出队时记录最小距离(可能会导致重复入队) #include<bits/stdc++.h> #define fore(x,y,z) for(LL x=(y) 阅读全文
posted @ 2022-09-04 17:12 80k 阅读(28) 评论(0) 推荐(0) 编辑
摘要:https://zhidao.baidu.com/question/367173891541492052.html 结果为C(N+K-1,K) 思想为上面的挨个放入。 或者 将每个箱子都先放入一个球,即N个箱子,放入N+K个小球,箱子非空,然后再使用隔板法,得到C(N+K-1,N-1)。 例题: h 阅读全文
posted @ 2022-09-02 10:46 80k 阅读(67) 评论(0) 推荐(0) 编辑
摘要:https://www.codechef.com/submit/ROCKET_PACK?tab=statement 主要思路为,转化为最短路问题,然后对全部点进行扫描。 active集合按dis排序,remove集合按到达边界排序。 当到某点i时,先根据remove,对到达边界小于i(已经不会被用于 阅读全文
posted @ 2022-08-31 11:27 80k 阅读(49) 评论(0) 推荐(0) 编辑
摘要:例题: https://ac.nowcoder.com/acm/contest/39100/F 主要思想是跑dijkstra 边权为: (1)当属性相同时,走min(x,y+z) (2)属性不同时,走min(y,x+z) 因为最短路的当前点的后面点变化次数都相同,所以不用考虑路径上的除(1)和(2) 阅读全文
posted @ 2022-08-31 10:12 80k 阅读(27) 评论(0) 推荐(0) 编辑
摘要:KMP自动机可以在O(1)的时间内计算kmp。 KMP自动机数组kmp_auto[i][j]可以表示第i位为'a'+j时的最长前缀长度(此前缀可以包含自身)。 kmp[i]数组,表示第i位的最长前缀长度(不含自身) 可以有kmp[i]=kmp_auto[kmp[i-1]][str[i]-'a']; 阅读全文
posted @ 2022-08-30 20:35 80k 阅读(38) 评论(0) 推荐(1) 编辑
摘要:题目: https://www.codechef.com/submit/MAKEIT1?tab=statement 题解: https://www.codechef.com/submit/ROCKET_PACK?tab=solution 代码: #include<bits/stdc++.h> #in 阅读全文
posted @ 2022-08-25 18:28 80k 阅读(19) 评论(0) 推荐(0) 编辑
摘要:01字典树用于处理数字的前缀 例题: https://codeforces.ml/contest/1720/problem/D2 题解: https://www.bilibili.com/video/BV1mG4y1a7QS?spm_id_from=333.1007.top_right_bar_wi 阅读全文
posted @ 2022-08-22 16:40 80k 阅读(13) 评论(0) 推荐(0) 编辑
摘要:https://codeforces.ml/contest/1712/problem/E2 题解: https://www.bilibili.com/video/BV1uB4y167ig?spm_id_from=333.1007.top_right_bar_window_view_later.con 阅读全文
posted @ 2022-08-22 10:24 80k 阅读(15) 评论(0) 推荐(0) 编辑
摘要:对于单次查询,可以直接用sqrt(n)遍历。 对于多次查询,每次都遍历会遍历多个无用的数。 可以采用打表法,直接获取数据范围内的全部数据的因子。 代码如下: int N = 100010; vector<int> factor[100010]; for (int i = 1; i <= N; i++ 阅读全文
posted @ 2022-08-22 09:59 80k 阅读(7) 评论(0) 推荐(0) 编辑
摘要:如果可以确定先入队的距离一定更小的话,则可以(先判断是否为初始值,如果是初始值,可以入队,则)在入队的时候记录距离,例如边权为1的BFS。 如果不能确定, 例如01BFS,可能先对1入队,再对0入队, 由于可以确保出队时是有序的,可以在出队时记录(类似dijkstra), 也可以在入队时记录距离(当 阅读全文
posted @ 2022-08-13 11:32 80k 阅读(40) 评论(0) 推荐(0) 编辑
摘要:n堆石子,每次可以选择一堆拿走任意颗石子,不能操作的输,问先手还是后手输。 结论:a1^a2^...^an==0则输,否则赢。 参考证明:https://blog.csdn.net/m0_51755720/article/details/120978376 例题:https://www.codech 阅读全文
posted @ 2022-08-11 09:45 80k 阅读(29) 评论(0) 推荐(0) 编辑
摘要:注意,异或(^)和与(&&)、或(||)、位与(&)、位或(|)的优先级类似 都比加减乘除要低。 注意在运算时要加括号 阅读全文
posted @ 2022-08-10 23:11 80k 阅读(551) 评论(0) 推荐(0) 编辑
摘要:两个数的LCM的常规求法为,两数之积/GCD, 对于多个数也可以分别以此方法求出。 但是对于数据量较大的数,LCM会超过数据范围, 此时可以采用,记录质因子的数量的方法。 用一个数组,记录全部质因子的最大数量。 然后遍历每个数,求出其全部质因子的数量,并更细全局的质因子最大数量。 最后将全部的质因子 阅读全文
posted @ 2022-08-10 12:10 80k 阅读(385) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 10 下一页
点击右上角即可分享
微信分享提示