C++
文章平均质量分 81
今天修复bug了吗
干啥啥不行,摸鱼第一名!
展开
-
AcWing《PAT甲级辅导课》第9章 哈希表
第9章 哈希表1048. Find Coins笔记哈希表存储每读入一个数x时,在哈希表中查找target - x是否存在,如果存在则检查是否需要更新全局最优解#include <iostream>#include <unordered_set>using namespace std;const int INF = 1010;unordered_set<int> h;int main() { int n, target; cin原创 2021-12-09 09:58:05 · 360 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第8章 动态规划
第8章 动态规划1007. Maximum Subsequence Sum笔记f(i)f(i)f(i)定义为所有以iii为右端点连续子序列的最大连续子序列和,状态转移方程为f(i)=max(w(i),f(i−1)+w(i))f(i)=max(w(i), f(i-1) + w(i))f(i)=max(w(i),f(i−1)+w(i))重新选区间,对应w(i)w(i)w(i)在原区间上继续选,对应f(i−1)+w(i)f(i-1) + w(i)f(i−1)+w(i)DP优化f(i)=m原创 2021-12-08 16:16:00 · 195 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第7章 数学
第7章 数学1049. Counting Ones笔记可参考《算法基础课》数位统计DP的思路,这题只是那题的特例#include <iostream>#include <cmath>#include <vector>using namespace std;const int N = 13; // 位数int get(int l, int r, vector<int> num) { int res = 0;原创 2021-12-07 16:38:34 · 565 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第6章 图
第6章 图1003. Emergency笔记Dijkstra知识点用途Dijkstra是最短路径算法,可求某个点到其它所有点的最小距离适用范围边权非负有向图和无向图都可以(不一定是简单图,可以带有重边或自环)思路把起点到其它点的最短距离置为无穷大,起点到自身的最短距离置为0选取最短距离最小的顶点uuu,并标记已选用顶点uuu更新其它顶点的最小距离,dist(u)+d(u,v)<dist(v)dist(u) + d(u, v) < dis原创 2021-12-04 21:57:04 · 605 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第5章 树
第5章 树1004. Counting Leaves笔记统计树每层叶子的个数,可用DFS或BFS在DFS加入参数depth,可表示当前层号,但还需要全局变量记录树的层数可用邻接表存储树#include <iostream>#include <cstring>using namespace std;const int N = 110, M = 210, ROOT = 1;int n, m;int h[N], e[M], ne[M], idx;int cnt原创 2021-12-01 22:26:50 · 1174 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第4章 排序
第4章 排序1012. The Best Rank笔记按学科存储各个学生成绩,同时也按学号存储各个学生的成绩。排序后,再用二分查找学生某科成绩的排名注意是从大到小排序,需要用sort(a.begin(), a.end(), greater<int>())可用哈希表加快学生的查找,二分加快成绩的查找实现预处理查询结果,也可加快查找#include <iostream>#include <algorithm>#include <vector>原创 2021-11-16 11:13:00 · 508 阅读 · 0 评论 -
AcWing《PAT甲级辅导课》第3章 进位制
第3章 进位制1010. Radix笔记全部化成十进制再比较可用秦九韶算法计算十进制数(递推计算)最大值是zzzzzzzzzz<101610^{16}1016,可用long long保存,但要注意尽可能都用long longlong long作乘法会溢出,需要先转成double类型(double)(a * b)和(double) a * b不等价,前者先计算乘法,可能会溢出最低开始查找的进制数可从数本身确定,但要注意+1最高开始查找的进制数可能是目标本身,但至少是36起#in原创 2021-11-12 15:57:20 · 414 阅读 · 0 评论 -
Acwing《算法基础课》第7章 时空复杂度分析
Acwing《算法基础课》第7章 时空复杂度分析文章目录Acwing《算法基础课》第7章 时空复杂度分析一般ACM或者笔试题的时间限制是111秒或222秒C++一般111s能计算10710^7107~10810^8108次,在这种情况下,C++代码中的操作次数控制在 10710^7107为最佳在不同数据范围下,代码的时间复杂度和算法的选择技巧如下:n≤30n\le 30n≤30,指数级别dfs+剪枝状态压缩dpn≤100n \le 100n≤100,O(n3)O(n^3)O(n3)原创 2020-10-07 12:17:53 · 257 阅读 · 0 评论 -
Acwing《算法基础课》第6章 贪心
Acwing《算法基础课》第6章 贪心文章目录Acwing《算法基础课》第6章 贪心区间区间选点最大不相交区间数量区间分组区间覆盖Hoffman树排队打水货仓选址耍杂技的牛区间区间选点给定NNN个闭区间[ai,bi][a_i,b_i][ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点,输出选择的点的最小数量。思路将每个区间按照右端点从小到大进行排序ed值初始化为无穷小,从前往后枚举区间如果遍历到的区间的左端点大于记忆区间的右端点(放有点),则把记忆区间更新原创 2020-10-07 12:16:17 · 361 阅读 · 0 评论 -
Acwing《算法基础课》第5章 动态规划
Acwing《算法基础课》第5章 动态规划文章目录Acwing《算法基础课》第5章 动态规划背包问题01背包问题完全背包问题多重背包问题分组背包问题线性DP数字三角形最长上升子序列最长公共子序列最短编辑距离区间DP计数类DP完全背包解法其它算法数位统计DP状态压缩DP蒙德里安的梦想最短Hamilton路径树形DP记忆化搜索背包问题01背包问题nnn个物品,每个物品的体积是viv_ivi,价值是wiw_iwi,背包的容量是mmm若每个物品最多只能装一个,且不能超过背包容量,则背包的最大价值是原创 2020-10-07 12:14:13 · 567 阅读 · 0 评论 -
Acwing《算法基础课》第4章 数学知识
Acwing《算法基础课》第4章 数学知识文章目录Acwing《算法基础课》第4章 数学知识质数判断质数分解质因数筛质数朴素筛法埃氏筛法线性筛法约数求所有约数约数个数定理约数之和定理例子:12=22×3112=2^2\times3^112=22×31,121212的约数有1,2,3,4,6,121, 2, 3, 4, 6, 121,2,3,4,6,12,约数之和为282828,根据公式计算同样是(20+21+22)×(30+31)=28(2^0+2^1+2^2)\times(3^0+3^1)=28(20+原创 2020-10-07 12:00:30 · 452 阅读 · 1 评论 -
Acwing《算法基础课》第3章 搜索与图论
Acwing《算法基础课》第3章 搜索与图论文章目录Acwing《算法基础课》第3章 搜索与图论深度优先遍历DFS宽度优先搜索BFS拓扑排序dijkstra算法朴素dijkstra算法堆优化dijkstra算法Bellman-Ford朴素Bellman-Ford算法队列优化Bellman-Ford算法——SPFA算法Floyd算法Prim算法Kruskal算法染色法匈牙利算法深度优先遍历DFS模板:bool st[N]; // 标记是否用过int h[N], ne[N];int dfs原创 2020-10-07 11:56:32 · 556 阅读 · 2 评论 -
Acwing《算法基础课》第2章 数据结构
Acwing《算法基础课》第2章 数据结构文章目录Acwing《算法基础课》第2章 数据结构单链表双链表模拟栈模拟队列普通队列循环队列单调栈单调队列KMPTrie树并查集朴素并查集维护size的并查集维护到祖宗节点距离的并查集堆哈希表字符串哈希STL模板单链表模板:int e[N], ne[N]; // 链表元素及下个结点的地址int head; // 头结点地址int idx; // 可用位置/** 创建含头结点的单链表 */void init() { head = 0;原创 2020-10-06 23:29:24 · 306 阅读 · 0 评论 -
Acwing《算法基础课》第1章 算法基础
Acwing《算法基础课》第1章 算法基础文章目录Acwing《算法基础课》第1章 算法基础排序快速排序归并排序二分整数二分浮点数二分高精度计算大整数存储大整数比较高精度加法高精度减法高精度乘法高精度除法前缀和一维前缀和二维前缀和差分一维差分二维差分双指针算法位运算离散化区间合并排序快速排序主要思想:确定分界点:x = a[l]x = a[r]q = a[(l + r) / 2]调整范围:左边<=x右边>x递归处理左边和右边模板:void quick原创 2020-10-06 23:21:18 · 1206 阅读 · 0 评论 -
Acwing《语法基础课》笔记
Acwing《语法基础课》笔记文章目录Acwing《语法基础课》笔记第1讲:变量、输入输出、表达式与顺序语句第2讲 `scanf`/`printf`语法及判断语句第3讲 循环语句第4讲 数组第5讲 字符串第6讲 函数第7讲 结构体、类、指针与引用第8讲 STL容器、位运算与常用库函数数组类容器有序对容器algorithm库难题第1讲:变量、输入输出、表达式与顺序语句常用头文件:iostream包括cin、cout、scanf、printfcstdin包括scanf、printfcmath万原创 2020-10-06 23:12:13 · 3619 阅读 · 0 评论