随笔分类 -  算法

包括了学习过程中的所有算法
摘要:准备河南大学机试一、河大机试 1.求一个数的反序数 int reverseX(int x){ int res = 0; // 求X的反序数 while(x > 0){ res = res*10 + x % 10; x /= 10; } return res; } 2.pair的使用 #include<iostrea 阅读全文
posted @ 2025-04-22 13:23 TomLove 阅读(21) 评论(0) 推荐(0)
摘要:输入样例 4 1 3 5 2 输出样例 22 (区间 dp) 集合表示最后一次合并选区间中的哪个点作为分界点 状态转义方程 f[l][r] = min(f[l][r], f[l][k] + f[k+1][r] + s[r] - s[l - 1]) #include<iostream> #includ 阅读全文
posted @ 2024-01-29 21:41 TomLove 阅读(31) 评论(0) 推荐(0)
摘要:贪心 耍杂技的牛 国王游戏同款思路 大部分贪心用的都是已经被证明过的知名的数学模型 贪心得到的答案 >= 最优解 贪心得到答案 <= 最优解 #include<iostream> #include<algorithm> using namespace std; // 给 pair<int, int> 阅读全文
posted @ 2024-01-09 21:17 TomLove 阅读(29) 评论(0) 推荐(0)
摘要:贪心区间覆盖 算法分析 #include<iostream> #include<algorithm> using namespace std; const int N = 100010; int n; struct Range { int l, r; bool operator< (const Ra 阅读全文
posted @ 2024-01-08 21:59 TomLove 阅读(28) 评论(0) 推荐(0)
摘要:贪心区间分组 #include<iostream> #include<algorithm> #include<queue> using namespace std; const int N = 100010; int n; struct Range{ int l, r; bool operator< 阅读全文
posted @ 2024-01-08 17:02 TomLove 阅读(36) 评论(0) 推荐(0)
摘要:c++ 结构体重载 因为此前对结构体不是很了解,这里特别地记录学习 结构体的心得体会 在以后的学习过程中所遇到的有关结构体的知识都会更新到这里 struct Range{ int l, r; bool operator< (const Range &W)const{ return r < W.r; 阅读全文
posted @ 2024-01-07 21:49 TomLove 阅读(28) 评论(0) 推荐(0)
摘要:贪心 看了很多证明,感觉不是很透彻,根据我自己的理解写了这篇题解 ans 表示最优解 cnt 表示所有解中的一个 现在需要证明以下不等式 1) ans <= cnt 2) ans >= cnt 1) 的证明 因为 ans 是所有的解中的最优解(也就是最小的解) 而 cnt 是所有解的区间中的一个解 阅读全文
posted @ 2024-01-07 21:48 TomLove 阅读(45) 评论(0) 推荐(0)
摘要:能被8整除,等价于后三位可以被8整除 能被2整除,等价于后1位可以被2整除 能被4整除,等价于后两位能被 4 整除 能被 3 或 9整除,等价于各位数字之和能被 3 或 9 整除 能被 11 整除, 等价于奇数位各位数字之和减去偶数位各位数字之和的差值能被11整除 能被 7 或 11 或 13 整除 阅读全文
posted @ 2023-09-23 22:58 TomLove 阅读(34) 评论(1) 推荐(0)
摘要:完全背包问题 思路: f[i][j] = f[i-1][j - k*v[i]] + k * w[i] 朴素版的做法 #include<iostream> #include<algorithm> using namespace std; const int N = 1010; int n, m; in 阅读全文
posted @ 2023-09-05 23:01 TomLove 阅读(32) 评论(0) 推荐(0)
摘要:话不多说,先看图 1.1 朴素版的Dijkstra算法 一般用到这个情况稠密图,也就是节点的个数比边的个数少。 (稠密图用邻接矩阵存储) #include<cstring> #include<iostream> #include<algorithm> using namespace std; con 阅读全文
posted @ 2023-08-22 10:43 TomLove 阅读(50) 评论(2) 推荐(0)
摘要:# c++ 中常用的 STL #### vector ```c++ //vector 变长数组 倍增的思想(倍增:系统为每一个程序分配空间的时候,所需要的时间和空间大小无关,与请求次数相关)尽量减少请求的次数 /* 返回元素的个数 size() 判断是否为空 empty() 清空 clear() f 阅读全文
posted @ 2023-08-18 21:20 TomLove 阅读(38) 评论(2) 推荐(0)
摘要:位运算# 位运算 **lowbit(x):返回x二进制的最后一位1** ```c++ lowbit的具体实现代码 x&-x; //(-x=(~x)+1) -x等于取反x加1; x = 1010; lowbit(x) = 10; x = 101000; lowbit(x) = 1000; ``` 可以用于求 阅读全文
posted @ 2023-08-18 15:42 TomLove 阅读(41) 评论(5) 推荐(0)
摘要:# 双指针算法 ```c++ for(int i=0, j=0; i using namespace std; const int N = 100010; int a[N], s[N];//s数组用来判断 j ~ i 之间有没有重复的 int main(){ int n; cin>>n; for(i 阅读全文
posted @ 2023-08-18 15:01 TomLove 阅读(25) 评论(0) 推荐(0)