![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
击剑的剑没有剑柄
这个作者很懒,什么都没留下…
展开
-
通过后序和中序建立二叉树
通过后序和中序建立二叉树代码#include<iostream>#include<algorithm>#include<vector>#include<map>#include<queue>#include<stack>#include<set>#include<cmath>#include<cstring>#define inf 0x3f3f3f3f#define pb原创 2022-04-22 12:51:15 · 170 阅读 · 2 评论 -
Codeforces Round #779 (Div. 2) D2. 388535 (Hard Version)
Codeforces Round #779 (Div. 2) D2. 388535 (Hard Version)题目思路:求解ans,使ans与 ai 异或后,数组a是[l,r]的一个全排列,由于每个数不同,所以异或后也不会相同,于是直接寻找ai XOR l 最大异或与最小异或,只要他们分别等于l,r。即可证明ai中每一个数都在[l,r]之中,且互不相等,即可得到结果为ai XOR l。寻找最大最大最小异或对,则采用trie异或树来求解代码#include<bits/stdc++.h>原创 2022-03-28 12:43:57 · 507 阅读 · 0 评论 -
竞赛头文件板子(数学)
竞赛头文件板子(数学)#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<stack>#include<map>#include<set>#define INF 0x3f3f3f3f#define pb push_b原创 2022-01-18 17:50:10 · 108 阅读 · 1 评论 -
背包小记(01,完全,多重,分组)
背包小记01背包概述:给你 nnn 个物品,每个物品的价值为 wiw_iwi ,现在给你一个mmm容量的背包 , 每个物品可以选择要或者不要,问在背包容量下最大物品价值状态方程二维状态方程:dp[i][j]=max(dp[i−1][j],dp[i−1][j−v[i]]+w[i])dp[i][j] = max(dp[i-1][j],dp[i-1][j-v[i]]+w[i])dp[i][j]=max(dp[i−1][j],dp[i−1][j−v[i]]+w[i])**一维状态方程:dp[j]=m原创 2022-01-12 22:58:39 · 179 阅读 · 1 评论 -
矩阵快速幂
矩阵快速幂对于n方阵的矩阵快速幂#include<bits/stdc++.h>#include<vector>using namespace std;typedef long long ll;const int mod = 1e9 + 7;vector<vector<int> > mul(vector<vector<int> > a,vector<vector<int> > b){ vect原创 2022-01-11 22:24:27 · 188 阅读 · 0 评论 -
排列奇偶性与排序的关系
排列奇偶性与排序的关系排列奇偶性定义:对于一个排列而已,如果它的逆序对为奇数,称为奇排列;反之称为偶排列对于其中任意两个数交换造成的结果:排列奇偶性发生变化(线性代数知识,很好思考),逆序对+1/-1对于其中三个数交换,即i->j->k->i,实际相当于做两次两个数交换(i,k)交换,(k,j)再交换,最终结果:排列奇偶性不发生改变,因为交换一次奇偶性改变,再交换一次再改变一次,即奇偶性不发生变化,逆序对+2/-2/+0排序:已经按小到大排序完的排列逆序对为0,若采用三个数交原创 2021-12-13 23:13:46 · 2649 阅读 · 0 评论 -
vector排序
vector的cmp#include<bits/stdc++.h>using namespace std;int n;vector<string> q;int k = 0;bool cmp(string a , string b){ int len1 = a.length() , len2 = b.length(); int i = 0; for( ; i < len1 && i < len2 ; i ++ ){原创 2021-11-20 20:59:34 · 488 阅读 · 0 评论 -
全排列(dfs基础)
全排列题目:输出n的全排列代码:#include<bits/stdc++.h>using namespace std;int q[10];int s[10];int n;void dfs(int k){ if(k == n){ for(int i = 0 ; i < n ; i ++) cout<<s[i]<<" "; cout<<endl; return; }原创 2021-11-20 19:41:53 · 630 阅读 · 1 评论 -
bfs板子题
bfs板子题题目:#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int,int> PII;const int N = 20;char s[N][N];int t[N][N];int x[10] = {0,1,0,-1,1,1,-1,-1};int y[10] = {1,0,-1,0,1,-1,1,-1};int bfs(int a , int b)原创 2021-11-14 22:38:55 · 443 阅读 · 1 评论 -
7-1 串的模式匹配(KMP解法和strstr解法)
串的模式匹配题目KMP解法strstr解法:题目KMP解法#include<bits/stdc++.h>using namespace std;char s[1000010],q[100010];int ne[100010];int n;int main(){ cin>>s+1>>n; while(n--){ cin>>q + 1; ne[1] = -1; for(int i = 2 , j = 0 ; q[i]原创 2021-11-09 09:51:14 · 525 阅读 · 1 评论 -
SICNU ACM新生第一次考核
题目A.最近距离(签到题)题目思路:代码:B.这是一道特别简单的题目(简单数学题)题目:思路:代码:C.M78星云的字符转换(基础题)题目:思路:代码:D.M78星云的排队事故(前缀和板子题)题目:思路:代码:F.不服气的洁洁学姐(gcd)题目:思路:代码:E.来自M78星云的小测试(进制转换+回文)题目:思路:代码:G.来自M78星云的减法运算题目:思路:python解法(最简单的解法):代码:c/c++解法(大模拟):代码:A.最近距离(签到题)题目思路:只需要判断AB直线是否垂直坐标轴且F点原创 2021-11-07 17:00:14 · 866 阅读 · 2 评论 -
PTA 1004 Counting Leaves(树的深搜)
1004 Counting Leaves (30 分)题目 **1004 Counting Leaves (30 分)**A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.Input Specification:Each input file contains one test case原创 2021-09-28 20:53:41 · 74 阅读 · 0 评论 -
图论算法之最短路问题
图论算法之最短路问题最短路图论算法之最短路问题Bellman-Ford算法思路特点例题代码spfa算法特点思路例题代码Floyd算法特点思路例题代码Bellman-Ford算法思路所有的边进行n-1轮松弛,因为在一个含有n个顶点的图中,任意两点之间的最短路径最多包含n-1条边。换句话说,第1轮在对所有的边进行松弛操作后,得到从1号顶点只能经过一条边到达其余各定点的最短路径长度,第2轮在对所有的边进行松弛操作后,得到从1号顶点只能经过两条边到达其余各定点的最短路径长度,…特点单源最短路算法,可求含原创 2021-08-21 19:30:52 · 128 阅读 · 0 评论 -
n皇后问题(回溯法)
n皇后问题(回溯法)n皇后问题链接https://www.acwing.com/problem/content/description/845/题目:n−皇后问题是指将 n 个皇后放在 n×n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n,请你输出所有的满足条件的棋子摆法。方法一思路:用一个col数组来表示每一列皇后是否存在皇后,sg数组来表示正对角线是否存在皇后,ng表示反对角线是否存在有皇后。对每一列进行判断搜索每一行是否可原创 2021-08-14 21:48:11 · 204 阅读 · 0 评论 -
dijkstra算法
dijkstra心得:1.图论算法比较重实践而非证明,我们该着重掌握如何从题目中抽象出点边,而非纠结如何证明2.dijkstra算法是一种单源最短路算法,适用于边权为正的情况代码基本思路:1.将所有点与点间距离赋值为无穷(类似memset(g,0x3f3f3f3f,sizeof g))。2.用dist[i]表示i节点到源点的距离,初始化为无穷。3.用一个s储存所有已确定最短路的点。4.每次寻找未确定点中离源点权值和最小的点t。5.用t来更新所有节点到源点的距离(比较dist[i]与dist原创 2021-07-24 19:02:03 · 222 阅读 · 0 评论