随笔分类 -  算法-题

摘要:原理 https://blog.csdn.net/RA100FDM/article/details/107460101 例题 https://atcoder.jp/contests/abc291/tasks/abc291_h 代码(示例) https://atcoder.jp/contests/ab 阅读全文
posted @ 2023-04-07 22:02 80k 阅读(21) 评论(0) 推荐(0) 编辑
摘要:经典结论:长度为n的排列的逆序对数量的期望为C(n,2)/2。 简单证明:任意两个数在一个排列中,为逆序的概率是(1/2),选择两个数的方案为C(n,2)。 故长度为n的排列的逆序对数量的总和为n!*C(n,2)/2,其中,n!是排列的数量 例题:https://ac.nowcoder.com/ac 阅读全文
posted @ 2022-11-14 22:21 80k 阅读(332) 评论(0) 推荐(0) 编辑
摘要:对一个数进行质因子分解的朴素做法是O(sqrt(n))的试除法 如果可以预处理出mindiv[i]数组,即每个数的最小质因子,则进行因式分解时,可以对数n,不断执行n/=mindiv[n],即可分解。 例题:https://ac.nowcoder.com/acm/contest/45670/E (此 阅读全文
posted @ 2022-11-14 21:54 80k 阅读(271) 评论(0) 推荐(1) 编辑
摘要:https://atcoder.jp/contests/abc271/tasks/abc271_g 题目的思路为: 构建dp矩阵,dp[i][j][k]表示开始前停在j,结束后停在k,且停下时恰好出现2^i次访问的概率 则dp[i]=dp[i-1]*dp[i-1] (矩阵乘法的中间过程模拟的就是两个 阅读全文
posted @ 2022-10-04 23:39 80k 阅读(40) 评论(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) 编辑
摘要:exgcd用于计算,形如ax+by=c的解。 证明:参考:https://www.cnblogs.com/mrclr/p/9380300.html 1、利用exgcd求解ax0+by0=gcd(a,b)的一个解: LL ExGCD(LL a, LL b, LL &x, LL &y) { if (b 阅读全文
posted @ 2022-09-10 11:28 80k 阅读(31) 评论(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 阅读(64) 评论(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 阅读(37) 评论(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) 编辑
摘要:一个序列是括号序列的条件是:在所有位置,前面(含当前位置)的左括号的数量大于等于右括号的数量,且最终相等。 例题: https://codeforces.com/contest/1709/problem/C #include<bits/stdc++.h> using namespace std; t 阅读全文
posted @ 2022-07-24 10:02 80k 阅读(37) 评论(0) 推荐(0) 编辑
摘要:连通分量可以用并查集处理。 连通分量是环的条件可以是:边数等于点数,每个点的度都为2。 例题:AcWing 4493. 环形连通分量 #include<bits/stdc++.h> using namespace std; typedef long long LL; int p[200010]; i 阅读全文
posted @ 2022-07-09 19:43 80k 阅读(51) 评论(0) 推荐(0) 编辑
摘要:对于曼哈顿距离存在另一种形式的计算: 等式右边两项分别对应于:x1和x2、y1和y2的大小关系相同和不同的情况。 这样做的好处是,对于多个(x2,y2)点,可以预处理出全部点的最大和最小的x2+y2、x2-y2,这样对于任意其他点,可以在O(1)计算出它和全部点的曼哈顿距离的最大值。 例题: htt 阅读全文
posted @ 2022-07-01 20:09 80k 阅读(399) 评论(0) 推荐(0) 编辑
摘要:如果一个二维网格中数据不重复,可以确定其鞍点最多有一个。 假设鞍点是列极大行极小, 则,与鞍点同行或同列的点显然不是鞍点, 与鞍点不同行列的点z,可以对应,鞍点行列中的两个点x和y 且显然x<y(因为x<鞍点<y) 如果z<x,则z不为列极大,如果z>y,则z不为行极小, 如果x<z<y,则z不为列 阅读全文
posted @ 2022-06-28 16:27 80k 阅读(37) 评论(0) 推荐(0) 编辑
摘要:在求组合数时,其除数有阶乘形式,会非常大。 所以需要用除法逆元记录。 有公式1/num=pow(num,P-2)(mod P),P是质数。 其中pow可以用QuickPow算法求出。 在阶乘递推时,可以有n!=(n-1)!*n;从前向后递推 阶乘的逆元在递推时,有1/(n!)=1/((n-1)!)/ 阅读全文
posted @ 2022-06-28 09:52 80k 阅读(137) 评论(0) 推荐(0) 编辑
摘要:组合数与杨辉三角有一一对应的关系: 根据杨辉三角的构造方式,以及组合数的性质:C(n,m)=C(n-1,m)+C(n-1,m-1) 可得杨辉三角的每一行,都对应着一个固定底数的组合数。 例题: https://codeforces.com/contest/1696/problem/E 同时有组合数公 阅读全文
posted @ 2022-06-27 22:12 80k 阅读(380) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示