- 博客(41)
- 收藏
- 关注
原创 ACWing 154滑动窗口
题目链接:滑动窗口#include<iostream>using namespace std;const int maxn=1000000+5;int num[maxn];int q[maxn];int main(void){ int n,k; scanf("%d %d",&n,&k); for(int i=1;i<=n;i++) { scanf("%d",&num[i]); } int
2022-04-09 18:31:10
267
原创 ACWing 830单调栈
原题链接:单调栈#include<iostream>using namespace std;const int maxn=100000+10;int s[maxn];int top=0;int main(void){ int n; scanf("%d",&n); for(int i=0;i<n;i++) { int x; scanf("%d",&x); while(top&
2022-04-08 11:22:01
280
原创 表达式求值
练习链接:表达式求值#include<iostream>#include<unordered_map>#include<string>#include<cstring>#include<algorithm>#include<stack>using namespace std;stack<int>num;stack<char>op;void eval(){ int b=num.top(
2022-04-08 10:31:08
382
原创 洛谷P2249
#include<iostream>#include<algorithm>using namespace std;const int maxn = 1000000 + 5;int input[maxn];int search(int l, int r,int x){ int mid; while (l < r) { mid = (l + r) >> 1; if (input[mid] >= x) { r = mid; }
2022-04-04 17:26:17
278
原创 欧拉路之深搜算法
欧拉路的性质奇点:从该点出发所连的边数为奇数,则称该点为奇点存在欧拉路的条件:图是连通的,并且只有两个奇点证明:对于欧拉路,除了起点和终点外,每个点都要进入并出去一次(或多次),显然只有两个奇点。存在欧拉回路的条件:图是连通的,并且没有奇点证明:一旦进入某个点,就必须要从该点出来,入度和出度相同,显然没有奇点。#include<iostream>using namespace std;const int maxn = 1000 + 5;int G[maxn][maxn];in
2022-04-04 11:22:04
208
原创 队列的基本操作
队列基本队列循环队列基本队列注意,队头不储存内容,只是用于标记,用来判断队是否为空。队伍满的条件是tail指针已经到了maxn-1#include<iostream>using namespace std;const int maxn = 1000;int q[maxn];int head = 0, tail = 0;void push(int v){ if (tail == maxn - 1) { printf("队满了\n"); return; } else
2022-03-29 22:32:00
111
原创 进制转换(c++)
进制转换#include<iostream>using namespace std;int top = 0;//设置栈底int main(void){ int S[100]; int x, k; scanf("%d %d", &x, &k);//x为需要转换的数值,k为进制 while (x) { S[++top] = x % k;//获取在该进制下的最低位的数字 x /= k;//舍弃最后一位 } do { printf("%d ", S[
2022-03-29 11:54:12
954
原创 模拟链表的应用(约瑟夫问题)
约瑟夫问题题目:洛谷P1996题目描述nn 个人围成一圈,从第一个人开始报数,数到 mm 的人出列,再由下一个人重新从 11 开始报数,数到 mm 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n-1 名小朋友,而该题是全部出圈。输入格式输入两个整数 n,mn,m。输出格式输出一行 nn 个整数,按顺序输出每个出圈人的编号。输入输出样例输入 #1复制10 3输出 #1复制3 6 9 2 7
2022-03-29 11:23:03
1404
原创 循环链表的应用
循环链表的应用约瑟夫问题约瑟夫问题#include<iostream>using namespace std;struct node{ int v; struct node* next;};node* head, * tail, * t;int main(void){ int n, m; scanf("%d%d", &n, &m); head = new node; head->v = 1; tail = head; for (int i
2022-03-28 21:37:48
590
原创 循环链表的操作
循环链表循环链表的创建增加插入删除完整代码循环链表的创建void create(int x){ node* newnode = new node; newnode->v = x; head = tail = newnode; newnode->next = head; num++;}增加void add(int x){ if (num == 0) { printf("链表为空\n"); return; } else { node* newnode
2022-03-28 18:02:58
919
原创 单链表的操作
单链表的操作创建遍历删除插入完整代码创建while(cin>>n&&n!=-1){ newnode = new node; newnode->next = NULL; newnode->v = n; if (head==NULL) { head = newnode; tail = newnode; } else { tail->next = newnode; tail = newnode; }}
2022-03-28 13:32:03
510
原创 UVa10003(切木棍)题解
UVa 10003题目理解解题思路最后一步重叠子问题状态转移方程边界处理递推顺序代码题目理解题目大意是给你一根木棍,棍子上有n个切割点,,要求将木棍分成n+1个部分,每次切割的费用是木棍的长度,输入是木棍的长度和切割点的个数(当木棍长度为0时程序退出,否则程序一直运行),输出是最小的总切割费用。解题思路这里我们用动态规划的思想解决这道题目,动态规划的关键就是要定义好状态,并找出状态转移方程,这里我们定义dp[i][j]表示切割点i到j这根子木棍所需的最小花费.最后一步在使用上述状态的情况下,dp
2022-02-12 23:08:45
760
原创 狄克斯特拉算法(Dijkstra)详细解释
文章目录算法用途(目的)算法思想与本质图文解释代码解析算法用途(目的)狄克斯特拉算法的用途或者说是目的是计算单源最短路径。单源最短路径的意思是从一个点出发到另外一个点最为的容易.举个例子解释,#mermaid-svg-nbf0pioDLfxvaYAO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-nbf0
2022-01-22 20:49:21
5414
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人