
算法
文章平均质量分 54
Nefu_lyh
这个作者很懒,什么都没留下…
展开
-
【ACwing】二、 数据结构:828. 模拟栈+ 3302. 表达式求值
828. 模拟栈输入样例:10push 5querypush 6popquerypopemptypush 4queryempty输出样例:55YES4NO按照笔记的操作打出来即可:# include <iostream>using namespace std;const int N = 100010;int stk[N],tt;int main(){ int n; cin>>n; whi原创 2021-10-07 21:45:18 · 638 阅读 · 0 评论 -
【ACwing】二、 数据结构:826. 单链表+ 827. 双链表
文章目录826. 单链表827. 双链表回顾以及计划:用了一个多月的时间看完了acwing的第一章基础算法,并完成了相关笔记,接下来的系列是对第二章数据结构的笔记以及相关习题。我觉得学习速度有点慢了,争取在这一学期能把所有的课程完成,并着手一些java项目的实战。主要是学校这学期开了三门大课:编译原理,操作系统、计算机网络,老师讲的不咋的却总要阶段考试,害。826. 单链表输入样例:10H 9I 1 1D 1D 0H 6I 3 6I 4 5I 4 5I 3 4D 6输出样原创 2021-10-03 14:30:41 · 1010 阅读 · 0 评论 -
【ACwing】一、快排延伸:1536. 均分纸牌+122. 糖果传递+105. 七夕祭
文章目录105. 七夕祭106. 动态中位数107. 超快速排序105. 七夕祭106. 动态中位数输入样例:3 1 9 1 2 3 4 5 6 7 8 9 2 9 9 8 7 6 5 4 3 2 1 3 23 23 41 13 22 -3 24 -31 -11 -8 -7 3 5 103 211 -311 -45 -67 -73 -81 -99 -33 24 56输出样例:1 51 2 3 4 52 59 8 7 6 53 1223 23 22 22 13 3原创 2021-09-30 14:50:02 · 635 阅读 · 0 评论 -
【ACwing】一、区间合并:AcWing 803. 区间合并
输入样例:51 22 45 67 87 9输出样例:3# include <iostream># include <algorithm> //使用了pair# include <vector>using namespace std;typedef pair<int ,int > PII;const int N = 100010;vector <PII> segs;int merge(vector&l.原创 2021-09-25 14:54:35 · 610 阅读 · 0 评论 -
【ACwing】一、离散化: 802. 区间和
802. 区间和输入样例:3 31 23 67 51 34 67 8输出样例:805pair的用法参考:https://blog.youkuaiyun.com/sevenjoin/article/details/81937695更详细的手算步骤如下:# include<iostream># include<vector># include<algorithm>using namespace std;typedef pair<原创 2021-09-24 21:19:31 · 708 阅读 · 0 评论 -
【ACwing】一、位运算:二进制的第k位数+lowbit(x)+801. 二进制中1的个数
位运算(1)二进制的第k位数# include<iostream>using namespace std;int main(){ int n = 10,k; cin>>k; printf("%d",n>>k&1);}(2)lowbit(x)最后一位一lowbit(x)最后一位一的意思是,求一个数的二进制表示中最后出现的1的十进制值,感觉有点拗口。举个例子:14=(1110)2_22, lowbit(14)=(10)2_原创 2021-09-24 17:47:46 · 657 阅读 · 0 评论 -
【ACwing】一、双指针算法: 799. 最长连续不重复子序列+800. 数组元素的目标和+判断子序列
文章目录AcWing 799. 最长连续不重复子序列AcWing 800. 数组元素的目标和AcWing 2816. 判断子序列AcWing 799. 最长连续不重复子序列输入样例:51 2 2 3 5输出样例:3AcWing 800. 数组元素的目标和AcWing 2816. 判断子序列...原创 2021-09-23 20:46:19 · 714 阅读 · 0 评论 -
【ACwing】一、前缀和与差分:795. 前缀和+796. 子矩阵的和+797. 差分+798. 差分矩阵
文章目录795. 前缀和796. 子矩阵的和797. 差分798. 差分矩阵795. 前缀和# include <iostream>const int N = 100010;int a[N], s[N];int n,m;int main(){ scanf("%d %d", &n, &m); for(int i = 1; i <= n; i++) { scanf("%d",&a[i]);原创 2021-09-13 20:38:11 · 705 阅读 · 0 评论 -
【ACwing】一、高精度:乘法+除法
文章目录793. 高精度乘法794. 高精度除法793. 高精度乘法#include <iostream>#include <vector>using namespace std;vector<int> mul(vector<int> &A, int b){ vector<int> C; int t = 0; for(int i = 0; i < A.size() || t; i++)//注原创 2021-09-09 14:21:34 · 562 阅读 · 0 评论 -
【ACwing】一、高精度:加法+减法
文章目录高精度加法高精度加法# include <iostream># include <vector>//注意头文件using namespace std;vector<int> A, B;vector <int> add(vector<int>&A, vector<int>&B){ vector<int> C; if(A.size()<B.size()) retur原创 2021-09-07 19:09:07 · 585 阅读 · 0 评论 -
【ACwing】一、二分:整数、小数二分模板+789. 数的范围+790. 数的三次方根
文章目录(1)整数二分(2)小数二分(3)(1)整数二分(2)小数二分(3)原创 2021-09-01 08:17:01 · 670 阅读 · 2 评论 -
【ACwing】一、排序:快排模板+归并模板+求逆序对数量
(1)快排模板:# include <iostream>using namespace std;const int N = 1e6+10;int q[N],n,k;void quick_sort(int q[],int l,int r){ if(l>=r) return; int i=l-1,j=r+1,x=q[l+r>>1]; while(i<j) { do i++; while(q[i]<x);原创 2021-08-29 19:43:57 · 734 阅读 · 0 评论 -
【ACwing】一、递归:1.7约数之和
97. 约数之和最后将所有的等差数列和相乘即可得到最终结果。此处极力推荐快速幂的代码分析,简单易懂:https://blog.youkuaiyun.com/qq_19782019/article/details/85621386#include <iostream>#include <bits/stdc++.h>using namespace std;#define MOD 9901int ksm(int a,int k)//快速幂{ a %= MOD; in原创 2021-08-22 22:20:51 · 610 阅读 · 0 评论 -
【ACwing】一、基础算法:1.6螺旋矩阵
459. 螺旋矩阵输入样例:4 2 3输出样例:14原创 2021-08-21 21:10:57 · 663 阅读 · 0 评论 -
【ACwing】一、基础算法:1.5最大的和+导弹拦截
1.4、求具有最大和的子矩形解法参考文章链接https://www.acwing.com/solution/content/4127/分析过程如下:#include <iostream>#include <bits/stdc++.h>using namespace std;int g[105][105];int n;int main(){ cin>>n; for(int i=1;i<=n;i++) for(int原创 2021-08-21 14:01:12 · 671 阅读 · 0 评论 -
【ACwing】一、基础算法:1.4飞行员兄弟
题目:输入样例:-+-----------+--输出样例:61 11 31 44 14 34 4首先理解下题意,下面是样例的运行过程:分析:算一下直接使用暴力的复杂度,已知4×4的矩阵共16个数,也就是起始可以改变的位置有16个,在每个起始状态下最坏会对16个数依次进行翻转。那么复杂度是O(1616)O(16^{16})O(1616) 运行次数会超限制。可以考虑用二进制数2162^{16}216的每一位的数值来标记16个数是否被翻转,也就是16位数的每一位有0/1两个原创 2021-08-20 13:30:00 · 699 阅读 · 1 评论 -
【ACwing】一、基础算法:1.3 递归枚举(排列型)
94. 递归实现排列型枚举也就是一个全排列问题,同样可以使用递归回溯来解决,当到达叶子节点时输出结果,否则遍历每个数,当该数未被选择过则将其标记为使用过,同时将其加入到解数组中,并进入下一层。当回溯时将当前的数重新标记为0,同时将该位置的解改为0。#include <iostream>#include <bits/stdc++.h>using namespace std;int n;int x[10]; //标记当前是否被选择过int num[10];//记录当前所选原创 2021-08-19 09:31:03 · 670 阅读 · 0 评论 -
【ACwing】一、基础算法:1.2 递归枚举(组合型)
93. 递归实现组合型枚举用一个动态数组记录被选中的数,若这些数的个数>m、这些数的总数+所有剩余数的个数<m表示当前的选择不满足条件(相当于剪枝函数),所以要回溯。#include <iostream>#include <bits/stdc++.h>using namespace std;int n,m;vector<int> x; //标记当前是否被选择过void dfs(int current){ if(x.size()>原创 2021-08-18 22:34:52 · 734 阅读 · 0 评论 -
【ACwing】一、基础算法:1.1 递归枚举(指数型)
92. 递归实现指数型枚举原创 2021-08-17 23:13:09 · 911 阅读 · 0 评论