随笔分类 -  算法

记录本人算法的学习过程捏
摘要:对于1~n所有数字的lcm,应该是1~n中所有质数P的 以P为底数对于n的对数 次幂的乘积 即 lcm = ∏ plogpn 。 码题集OJ-跑步 (matiji.net) 线性筛 + 乘法逆元 由题意,1~n每个人最后都重新一起在终点相遇时间停止,那么终止时间则为1~n的所有lcm, 根据上面方法 阅读全文
posted @ 2024-06-04 20:16 rw156 阅读(58) 评论(0) 推荐(0)
摘要:1.区域赛银牌:Problem - J - Codeforces 这道题首先覆盖了字符串哈希的基础板子,其次,通过pll add 和mul函数来重新计算区间反转后的hash值,然后再判断回文 字符串哈希的实质的递推求每一项,求区间子串哈希利用前缀和思想 1 #include <bits/stdc++ 阅读全文
posted @ 2024-04-11 00:27 rw156 阅读(34) 评论(0) 推荐(0)
摘要:在线性空间中,线性基是一组线性无关的向量组,且在其所在的向量空间中是一个极大线性无关向量组 我们在算法里,可以看作是若干个数的集合 在一个序列中,取其线性基中的任意几个数,可以得到原来序列的任何一个数 线性基中的数都是唯一的 如何构造线性基 贪心的方法 从高位往低位扫,设a[x]为第x位上是1的数, 阅读全文
posted @ 2024-04-09 23:43 rw156 阅读(34) 评论(0) 推荐(0)
摘要:Luogu P3805【模板】manacher 算法 1 // Luogu P3805 【模板】manacher 算法 2 #include <iostream> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 阅读全文
posted @ 2024-03-14 16:47 rw156 阅读(38) 评论(0) 推荐(0)
摘要:1. Luogu P4196 [CQOI2006]凸多边形 /【模板】半平面交 题意:逆时针给出 n 个凸多边形的顶点坐标,求它们交的面积 思路: 先求半平面交的边界线 再求由边界线构成的凸多边形的面积 时间:nm*log(nm)=500*log500 1 #include <bits/stdc++ 阅读全文
posted @ 2024-02-01 12:39 rw156 阅读(50) 评论(0) 推荐(0)
摘要:1. Luogu P1452 [USACO03FALL]Beauty Contest G /【模板】旋转卡壳 思路:距离最远的点一定是凸壳上的两点 双指针枚举,i指针枚举凸壳的边,j指针在前面枚举最远点,优选答案 注意,两个指针都是向前走的,保证旋转卡壳时间为O(n) 时间:O(n*logn + n 阅读全文
posted @ 2024-01-30 12:34 rw156 阅读(60) 评论(0) 推荐(0)
摘要:1. POJ2986 A Triangle and a Circle 题意:给定一个三角形,一个圆的圆心和半径,求圆和三角形的面积交 利用三角剖分,计算简单多边形和圆的相交面积 三角剖分的步骤: 多边形上的每条边都与圆心构成三角形 算出每个三角形与圆的相交面积 根据有向面积的正负累加到答案中 计算每 阅读全文
posted @ 2024-01-29 22:48 rw156 阅读(74) 评论(0) 推荐(0)
摘要:1. Luogu P2742 [USACO5.1]圈奶牛Fencing the Cows /【模板】二维凸包 上面是板子题 Andrew 算法 对所有点按坐标 x 为第一关键字、 y 为第二关键字排序。第1、第n两个点一定在凸包上。 先顺序枚举所有点,求下凸包。用栈维护当前在凸包上的点:新点入栈前, 阅读全文
posted @ 2024-01-29 21:59 rw156 阅读(44) 评论(0) 推荐(0)
摘要:给出一个长度为nn的数组,完成以下两种操作:1. 将第ii个数加上kk2. 输出区间[i,j][i,j]内每个数的和 朴素算法单点修改:O(1)O(1)区间查询:O(n)O(n)使用树状数组单点修改:O(logn)O(logn)区间查询:O(logn)O(logn)前置知识lowbit()lowbi 阅读全文
posted @ 2024-01-05 18:33 rw156 阅读(65) 评论(0) 推荐(0)
摘要:1.acwing 1057 闫氏DP分析法状态表示fi,j,kfi,j,k—集合: 考虑前 i 天的股票,第 i 天的 决策 是 k,且完成的 完整交易数 为 j 的方案 状态表示fi,j,kfi,j,k—属性: 方案的总利润 最大MAX 状态计算fi,j,kfi,j,k: fi,j,0=max(f 阅读全文
posted @ 2023-12-09 20:29 rw156 阅读(50) 评论(0) 推荐(0)
摘要:1.信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) 1283登山 根据题意,该题的图形为单峰的序列,从左至右先递增再递减,我们可以依次枚举峰值 然后再分别计算左右两个子序列的长度 1 #include<bits/stdc++.h> 2 using namespace std; 3 阅读全文
posted @ 2023-12-07 00:58 rw156 阅读(41) 评论(0) 推荐(0)
摘要:1.稠密图用邻接矩阵来存 朴素版dijkstra 算法 acwing 849 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N = 510; 5 int n,m; 6 int dis[N]; //每个点到起点的最短距离( 阅读全文
posted @ 2023-11-30 20:51 rw156 阅读(33) 评论(0) 推荐(0)
摘要:1. 1 /如何手写一个堆?完全二叉树 5个操作 2 //1. 插入一个数 heap[ ++ size] = x; up(size); 3 //2. 求集合中的最小值 heap[1] 4 //3. 删除最小值 heap[1] = heap[size]; size -- ;down(1); 5 //4 阅读全文
posted @ 2023-11-28 22:45 rw156 阅读(37) 评论(0) 推荐(0)
摘要:用于字符串的插入和查询 1.acwing835 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N = 100010; 5 int son[N][26]; //trie树中每个点的所有儿子 6 int cnt[N],idx 阅读全文
posted @ 2023-11-28 16:30 rw156 阅读(14) 评论(0) 推荐(0)
摘要:1.区间划分 acwing 905 按照区间右端点来排序,如果当前点能覆盖到则继续往下读,如果不能覆盖到则点数加一,该点更新为下一个区间的最右端点 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int n; 5 const int N = 阅读全文
posted @ 2023-11-23 20:08 rw156 阅读(30) 评论(0) 推荐(0)
摘要:动态规划过程是: 每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划(DP)。 基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问 阅读全文
posted @ 2023-11-21 11:15 rw156 阅读(53) 评论(0) 推荐(0)
摘要:1.数字三角形。acwing 898. 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 const int N = 520,INF = 1e9; 5 int n; 6 int a[N][N]; //表示每一个点 7 int f[N][N]; 阅读全文
posted @ 2023-11-20 18:52 rw156 阅读(38) 评论(0) 推荐(0)
摘要:1. 01背包问题 二维表示 对于01背包一维优化的一点理解:二维转化为一维:删掉了第一维:在前i个物品中取。f[j]表示:拿了总体积不超过j的物品,最大总价值。 为何能转化为一维?二维时的更新方式:f[i][j]=max(f[i - 1][j] ,f[i - 1][j - v[i]] + w[i] 阅读全文
posted @ 2023-11-18 20:24 rw156 阅读(45) 评论(0) 推荐(0)
摘要:1.树的重心 acwing 846 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 5 using namespace std; 6 7 const int N = 1e5 + 10; //数据范围是10的5次方 阅读全文
posted @ 2023-11-15 23:55 rw156 阅读(19) 评论(0) 推荐(0)
摘要:DFS : acwing 842 递归搜索树 题库 - AcWing 1 #include<iostream> 2 using namespace std; 3 4 const int N = 10; 5 int n; 6 int path[N]; 7 bool st[N]; 8 9 void df 阅读全文
posted @ 2023-11-14 17:14 rw156 阅读(28) 评论(0) 推荐(0)