
模板
Rrrrya
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉搜索树(BST)
#include <bits/stdc++.h>using namespace std;struct BST{ int data; BST *l; BST *r;};// 新建节点BST *Create_Node(int x){ BST *p; p = (BST *)malloc(sizeof(BST)); p->data = x; p->l = NULL; p->r = NULL; return p;}// 插入元素B原创 2020-12-11 20:38:32 · 151 阅读 · 0 评论 -
次短路问题(陕西师范大学第九届ACM程序设计竞赛-F 新冠病毒要回家)
求到顶点v的次短路时,有两种情况,要么是到其他某个顶点u的最短路再加上u->v的边,要么是到某个顶点u的次短路再加上u->v的边。 一般我们用Dijkstra求得最短路(无负权边),由此我们只要在Dijkstra算法中求取每个顶点的次短路即可。例题:陕西师范大学第九届ACM程序设计竞赛-F 新冠病毒要回家#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <m..原创 2020-08-18 21:36:23 · 219 阅读 · 0 评论 -
三角形相关(数论)
面积 double x1, x2, x3, y1, y2, y3; scanf("%lf %lf %lf %lf %lf %lf", &x1, &y1, &x2, &y2, &x3, &y3) double a = sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); double b = sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)); double c = sq.原创 2020-08-18 21:18:29 · 226 阅读 · 0 评论 -
判负环(Bellmanford Spfa)
Bellmanford#include <iostream>#include <cmath>#include <algorithm>#include <cstdio>#include <cstring>#include <queue>#include <stack>#include <map>using namespace std;#define INF 0x3f3f3f#define .原创 2020-08-03 09:44:01 · 198 阅读 · 0 评论 -
八皇后问题
在8*8的棋盘中放置八个皇后棋子,要求每一行每一列每一条对角线上只出现一个皇后棋子。枚举每一行放置的情况,递归到第八行。#include <iostream>#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <set>us.原创 2020-07-28 09:53:35 · 139 阅读 · 0 评论 -
DIjkstra(链式前向星建图)
#include <iostream>#include <cmath>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <set>using namespace std;#define INF 0x3f3f3fint gcd(int a, int b) {r原创 2020-07-27 11:51:31 · 258 阅读 · 0 评论 -
链式前向星
如果说邻接表是不好写但效率好,邻接矩阵是好写但效率低的话,前向星就是一个相对中庸的数据结构。前向星固然好些,但效率并不高。而在优化为链式前向星后,效率也得到了较大的提升。虽然说,世界上对链式前向星的使用并不是很广泛,但在不愿意写复杂的邻接表的情况下,链式前向星也是一个很优秀的数据结构。#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define INF 0x3f.原创 2020-07-23 09:05:27 · 129 阅读 · 0 评论 -
Dijkstra(单源最短路径算法)
算法详解模板题#include<bits/stdc++.h>using namespace std;#define INF 0x3f3f3f#define pb push_back#define mem(a,x) memset(a,x,sizeof(a))struct node{ int x, dis; // 运算符重载(将对列中存的元素按长度从小到大排) bool operator < (const node &p) const.原创 2020-07-22 13:47:35 · 341 阅读 · 5 评论 -
二叉查找树(二叉排序树,二叉搜索树)(未加入平衡处理的简单二叉查找树)
二叉查找树(Binary Search Tree),又称二叉搜索树,二叉排序树。性质:若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也分别为二叉排序树。操作:插入一个数值查询是否包涵某个数值删除某个数值一,建树(插入一个数值)例:4933: 二叉排序树#include<bits/stdc++.h>using namespace std;#define pi acos(-原创 2020-07-22 08:42:13 · 134 阅读 · 0 评论 -
埃氏筛法与欧拉筛法
埃氏筛法从2开始,将每个数的倍数标记,从而达到筛选素数的目的j从i*I开始,因为在前面的筛选中,2到i-1的数已经被筛掉了缺陷:同一合数可能会被多次筛选int maxn = 1000010;int vis[maxn];void Prime(){ memset(vis,0,sizeof(vis)); vis[0] = 1; vis[1] = 1; for(int i = 2; i <= maxn; i++) { if(vis[i]原创 2020-07-20 20:57:55 · 252 阅读 · 0 评论 -
网络流
定义:对于任意一张有向图(也就是网络),其中有n个点,m条边,源点s,汇点t,边称为容量。源点:只进不出的点汇点:只出不进的点特征:1,每条边的流量不能超过边的容量2,正向边的流量=反向边的流量3,正向流量和=反向流量和残量网络:在任意时刻,网络中的所有节点以及剩余容量大于0的边构成的子图被称为残量网络。最大流:从源点到汇点所能形成的最大流量网络最大流模板题第一种最大流算法:Edmonds−Karp增广路算法(简称EK算法)增广路:一条从S到T的一条路径上的所有边的剩余容量都大原创 2020-07-16 20:16:48 · 737 阅读 · 0 评论 -
三点共线的判断,以及求已知三点的外接圆圆心
#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back#define lb lower_bound#d原创 2020-07-14 16:49:34 · 764 阅读 · 0 评论 -
RMQ问题(ST表和线段树)
RMQ问题:给定一个长度为n的区间(1-n),m次询问,每次询问[l,r]区间的极值。ST表:一种利用dp求解区间最值的倍增算法。关键:构造f[i][j] 数组代表的是以第i个元素为起点的长度为2^j的区间极值。预处理:f[i][0] = s[i],长度为1的区间的极值是元素本身。状态转移:每个区间的长度都是2的次方,因此区间可以均分为两个等长区间,该区间的极值就等于均分的两个区间极值的极值。f[i][j]第一区间:从i开始,长度为2^(j-1)–>f[i][j-1]第二区间:从i+2原创 2020-07-14 11:58:35 · 402 阅读 · 0 评论 -
C/C++ ceil,floor,trunc,round函数
floor:向下取整ceil:向上取整trunc:去小数round:四舍五入具体实现效果如下int main (){ const char * format = "%.1f \t%.1f \t%.1f \t%.1f \t%.1f\n"; printf ("value\tround\tfloor\tceil\ttrunc\n"); printf ("-----\t-----\t-----\t----\t-----\n"); printf (format, 2.3,r原创 2020-07-14 11:30:39 · 528 阅读 · 0 评论 -
查询区间素数个数
第一行输入一个正整数 T,代表询问次数 (1 ≤ T ≤ 100000)接下来 T 行,每行输入两个正整数 a,b 表示查询素数个数得范围为 [ a,b ] (1 ≤ a ≤ 107,a ≤ b ≤ 107)#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define INF 0x3f3f3f#define fi first#define se secon原创 2020-06-14 16:41:15 · 530 阅读 · 0 评论 -
upper_bound和lower_bound
// n为数组大小,x为待查询元素 // 递增数组 cout << upper_bound(s1,s1+n,x)-s1 << endl; // 数组中第一个大于3得下标 cout << lower_bound(s1,s1+n,x)-s1 << endl; // 数组中第一个大于等于3得下标 // 递减数组 cout << upper_bound(s2,s2+n,x,greater<int>.原创 2020-06-14 14:33:57 · 157 阅读 · 0 评论 -
求一元二次方程的解
#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 998244353#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back#define lb lower_bound#de原创 2020-06-10 19:54:41 · 369 阅读 · 0 评论 -
求和n个数异或和最小的数
给定n个数s[0],s[1],s[2],s[3]…s[n-1],求一个数w,使得w ^s [0]+w ^ s[1]+w ^ s[2]…w ^ s[n-1]的和最小。思路:将n个数化为二进制数,统计n个数在每位二进制上1的个数,w的二进制取n个数每位二进制上个数多的(1或0)。#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define INF 0x3f3f3f#原创 2020-06-07 10:31:44 · 1285 阅读 · 0 评论 -
空间求平面方程,以及点到平面的距离
#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back#define lb lower_bound#d原创 2020-06-06 16:55:15 · 713 阅读 · 0 评论 -
四则运算之逆波兰式
波兰式与逆波兰式的讲解逆波兰式例题:例题1237#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 998244353#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back原创 2020-06-04 13:43:46 · 480 阅读 · 0 评论 -
Vector
#include <bits/stdc++.h>using namespace std;vector<int>s;s.size(); // num itemss.empty() // 判断是否为空s.swap(s2) // 交换s(vector)和s2(vector)s.begin() // first ...原创 2020-05-14 09:55:47 · 123 阅读 · 0 评论 -
String简单操作
#include <bits/stdc++.h>using namespace std;#define pi acos(-1)#define N 1000000007#define ll long long#define ull unsigned long long#define mem(a) memset(a,0,sizeof(a))int main(){ ...原创 2020-04-23 10:48:37 · 167 阅读 · 0 评论 -
最小生成树(kruskal算法)
#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 998244353#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back#define lb lower_bound#de原创 2020-06-02 13:46:50 · 176 阅读 · 0 评论 -
数据离散化(unique)
离散化详解unique用法#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 998244353#define INF 0x3f3f3f#define fi first#define se second#define it iterator#define ins insert#define mp make_pair#define pb push_back#define lb原创 2020-06-01 20:45:00 · 320 阅读 · 0 评论 -
分解质因数
int s[100010];int k = 0;int jud(ll x){ if(x==1) return 0; for(ll i = 2; i <= sqrt(x); i++){ if(x%i==0) return 0; } return 1;}ll fj(ll x){ ll gg = sqrt(x); ll flag = 1; for(ll i = 2; i <= gg;i++) { if(x%i==0) { flag=0; if(f原创 2020-05-31 20:46:30 · 218 阅读 · 0 评论 -
快速幂及分数取模
ans == a^b%mtypedef long long llll binaryPow(ll a, ll b, ll m){ ll ans = 1; while(b > 0){ if(b & 1){ ans = ans * a % m; } a = a * a % m; b >>= 1; } return ans;}原创 2020-05-28 13:19:25 · 286 阅读 · 0 评论 -
快速排序
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。常用的C++STL中的sort。算法实现:每次选择一个基准,将比基准小的数放到基准左边,将比基准大的数放在基准右边,递归实现。*/#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define fi first#define se secon原创 2020-05-27 17:20:59 · 236 阅读 · 0 评论 -
Tarjan-求强连通分量
例题算法讲解#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define ll long long#define ull unsigned long long#define mem(a) memset(a,0,sizeof(a))#define cio ios::sync_with_stdio(false)std::vector<int>e[1原创 2020-05-22 09:04:12 · 160 阅读 · 0 评论 -
Tarjan算法-求割点
无向图求割点例题:洛谷P3388#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 1000000007#define ll long long#define ull unsigned long long#define mem(a) memset(a,0,sizeof(a))#define cio ios::sync_with_stdio(false)std::vector<原创 2020-05-21 14:31:12 · 244 阅读 · 0 评论 -
Tarjan算法-求割边(桥)
算法详解模板#include<bits/stdc++.h>using namespace std;#define pi acos(-1)#define mod 80112002#define ll long long#define ull unsigned long long#define mem(a) memset(a,0,sizeof(a))#define cio ios::sync_with_stdio(false);const int N = 100010;int原创 2020-05-20 18:19:20 · 451 阅读 · 0 评论 -
多重背包(带例题)
ZCMU 1919: kirito’s 星爆气流斩Description主角kirito是使用世界首款完全潜行游戏“刀剑神域(Sword Art Online)”的玩家。曾经很幸运的参与过封闭测试,并买下正式版的kirito,正准备体验游戏的第一次正式营运。但在登入后不久,kirito发现“登出”指令竟然消失,而与此同时自称是SAO游戏设计者“茅场晶彦”的人说:“无法完成攻略就无法离开游戏,只...原创 2019-11-27 12:11:31 · 785 阅读 · 0 评论 -
基姆拉尔森公式(求日期对应的星期)
#include <bits/stdc++.h>using namespace std;//基姆拉尔森计算公式根据日期判断星期几void CalculateWeekDay(int y, int m,int d){ if(m==1||m==2) m+=12,y--; int iWeek = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; sw...原创 2019-11-26 12:17:39 · 271 阅读 · 0 评论 -
排列与全排列
给定一个数,输出所有的排列#include<bits/stdc++.h>using namespace std;int s[500010];int main(){ int n; while(~scanf("%d", &n)){ memset(s,0,sizeof(s)); for(int i = 0; i <...原创 2019-11-21 16:49:27 · 279 阅读 · 0 评论 -
01packbag
#include <bits/stdc++.h>using namespace std;int knapsack(int *W, int *V, int *res, int n, int C){ // n:物品数 // C:背包容量 // value存储最优解 int value = 0; // f[i][j]存储容量为j的情况下能取i个物品时的最大...原创 2019-11-06 14:16:15 · 447 阅读 · 0 评论