弹药库
文章平均质量分 73
Devinxtw
毛毛虫蜕变记
展开
-
用log10()的几个用法,确定位数和取整取小数
Leftmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11298 Accepted Submission(s): 4324 Problem DescriptionGiven a positive ...转载 2019-02-16 16:50:12 · 5227 阅读 · 0 评论 -
卡特兰数模板(大数)
#include <iostream> #include <cstring> #include <cstdio> using namespace std; #define MAX 100 #define BASE 10000 void multiply(int a[],int Max,int b) {//大数乘法 int...原创 2018-06-05 20:13:31 · 401 阅读 · 0 评论 -
拓扑排序dfs
#include<iostream> #include<cstdio> #include<list> #include<vector> using namespace std; const int maxn=1e5+5; vector<vector<int> >g(maxn); b...原创 2018-06-05 20:13:42 · 247 阅读 · 0 评论 -
拓扑排序bfs
//bfs实现拓扑排序#include<iostream>#include<cstdio>#include<queue>#include<list>using namespace std;const int maxn=1e5+5;int indeg[maxn];bool book[maxn];vector<vector&...原创 2018-06-04 21:22:13 · 274 阅读 · 0 评论 -
克鲁斯卡尔算法求最小生成树
//krusal算法 int find(int u)//擒贼先擒王 { if(u==pre[u]){ return u; }else{ pre[u]=find(pre[u]);//路径压缩,使得第二次更快,直接找到老大 return pre[u]; } } void merge...原创 2018-06-04 21:21:38 · 454 阅读 · 0 评论 -
计算几何基本元素
#define eps (1e-10) struct point{ double x,y; point(){} point(double x,double y):x(x),y(y){} point operator + (point &p){return point(x+p.x,y+p.y);} point operator ...原创 2018-06-04 21:21:04 · 180 阅读 · 0 评论 -
点到线短距离
double getdistanceSP(segment s,point p) { if(dot(s.p2-s.p1,p-s.p1)<0.0)return abs(p-s.p1); if(dot(s.p1-s.p2,p-s.p2)<0.0)return abs(p-s.p2); return getdistanceLP(s,p); }原创 2018-06-04 21:20:20 · 174 阅读 · 0 评论 -
判断线段相交
string ccw(point a,point b,point c) { point temp1=b-a; point temp2=c-a; if(cross(temp1,temp2)>eps){return "COUNTER_CLOCKWISE";} if(cross(temp1,temp2)<-eps){return "CLOC...原创 2018-06-04 21:19:46 · 195 阅读 · 0 评论 -
判断线段是否相交
const int COUNTER_CLOCKWISE=1; const int CLOCKWISE=-1; const int ONLINE_BACK=2; const int ONLINE_FRONT=-2; const int ON_SEGMENT=0; int ccw(point a,point b,point c) { point temp1=b...原创 2018-06-04 21:19:13 · 203 阅读 · 0 评论 -
迪杰斯特拉算法
#include<bits/stdc++.h>using namespace std;const int maxn=1e2+5;const int inf=(1<<21);const int white=0;const int gray=1;const int black=2;int n,m[maxn][maxn];void dijkstra(){...原创 2018-06-05 20:15:40 · 121 阅读 · 0 评论 -
prim算法求最小生成树
//prim算法+输出路径+邻接矩阵#include<bits/stdc++.h>using namespace std;const int maxn=1e2+5;const int inf=(1<<21);const int white=0;const int gray=1;const int black=2;int n,m[maxn][maxn];...原创 2018-06-05 20:16:12 · 619 阅读 · 0 评论 -
sscanf功能详解
在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举。这些函数的使用都很简单,总结一下,等下次使用一目了然。俗话说:好记性不如烂笔头,记录下来就是效率。/*****************************************************...转载 2019-02-16 16:30:05 · 115 阅读 · 0 评论 -
树的直径
//两次bfs,求树的直径#include<iostream>#include<cstdio>#include<vector>#include<queue>using namespace std;const int maxn=1e5+5;const int inf=(1<<30);struct edge{ i...原创 2018-05-30 20:51:27 · 96 阅读 · 0 评论 -
lucas&&拓展Lucas
//Lucas#include <iostream>#include <stdio.h>#include <algorithm>#include<cstring>using namespace std;typedef long long ll;ll mulit(ll a,ll b,ll m){ ll ans=0; ...原创 2018-05-30 20:50:30 · 334 阅读 · 0 评论 -
floyd算法
for(int k=0;k<n;k++){for(int i=0;i<n;i++){for(int j=0;j<n;j++){map[i][j]=min(map[i][j],map[i][k]+map[k][j]);}}}原创 2018-06-05 20:20:57 · 127 阅读 · 0 评论 -
母函数
#include <iostream> using namespace std; const int _max = 10001; // c1是保存各项质量砝码可以组合的数目 // c2是中间量,保存没一次的情况 int c1[_max], c2[_max]; int main() { int nNum; //你想用已有的面值组成nN...原创 2018-06-05 20:18:45 · 139 阅读 · 0 评论 -
计数排序
#include<iostream>#include<cstdio>using namespace std;const int maxn=2e6+5;const int maxv=1e4+5;int n,s[maxn],b[maxn],c[maxv];int main(){ scanf("%d",&n); for(int i=0...原创 2018-06-05 20:18:15 · 94 阅读 · 0 评论 -
底层实现二叉搜索树的插入寻找删除
#include<iostream>#include<cstdio>#include<string>#include<cstdlib>using namespace std;struct node{ int key; node *right,*left,*parent;};node *root,*NIL;voi...原创 2018-06-05 20:17:37 · 147 阅读 · 0 评论 -
底层堆实现
#include<iostream>#include<cstdio>using namespace std;const int maxn=2e6+5;const int inf=(1<<31)-1;int h,s[maxn];void maxheapify(int i){ int l,r,largest=i; l=2*i;...原创 2018-06-05 20:16:50 · 526 阅读 · 1 评论 -
圆与直线的交点
point project(point a,point b,point c) { point base=b-a; double r=dot(base,c-a)/norm(base); return a+(base*r); } pair<point,point>getcrosspoints(point a,int r,point b,...原创 2018-06-04 21:18:40 · 1766 阅读 · 0 评论 -
园与圆的交点
double arg(point p){return atan2(p.y,p.x);} point polar(double a,double r) { return point(cos(r)*a,sin(r)*a); } pair<point,point>getcrosspoints(point a1,double r1,point a2,doubl...原创 2018-06-04 21:17:59 · 439 阅读 · 0 评论 -
线段相交交点个数
#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;#define BOTTOM 0#define LEFT 1#define RIGHT 2#define TOP 3struct point{ double x,y; point(){} point(double ...原创 2018-06-04 21:17:22 · 1340 阅读 · 0 评论 -
ubunto pastebin 文件操作
Download as text 1 2 3 4 5 6 7 8 9101112131415#include<iostream>#include<cstdio>#include<fstream>using namespace std;int main(){ ifstream indata; indata.open("...原创 2018-05-21 15:29:42 · 991 阅读 · 0 评论 -
通过遍历确定二叉树结构
中序遍历跟后序遍历求出前序遍历/*中序遍历跟后序遍历求出前序遍历*/#include<iostream>#include<cstdio>#include<cstring>using namespace std;char inord[30],suford[30];void fun(int lsuf,int rsuf,int lin,int ...原创 2018-05-21 15:27:35 · 220 阅读 · 0 评论 -
容斥定理计算一个数内跟他互素的数的个数
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;typedef long long ll;ll m,p[100],cnt,sum,a[100];//计算因子void fac(){ cnt=...原创 2018-05-21 15:26:39 · 375 阅读 · 0 评论 -
1-n中所有数的欧拉phi函数值(小于n且与n互素的整数个数)
int phi[1000005];void phi_table(int n){ for(int i=2; i<=n; ++i) phi[i]=0; phi[1]=1; for(int i=2; i<=n; ++i) if(!phi[i]) for(int j=i; j<=n; j+=i) ...原创 2018-05-21 15:25:43 · 196 阅读 · 0 评论 -
计算佩尔方程的解
*所有解* 若佩尔方程x^2 - d * y^2 = 1的最小特解是( x1 , y1 )那么有迭代公式 x[n]=x[n-1]*x[1]+d*y[n-1]*y[1]; y[n]=x[n-1]*y[1]+y[n-1]*x[1]; *特解计算方法* 1.连分数法#include<cstdio> #include<cstring> #include<cmath&g...原创 2018-05-21 15:24:34 · 393 阅读 · 0 评论 -
梅森(Lucas-Lehmer判别法+乘法换加法)
typedef long long ll;ll muil(ll a,ll b,ll m) //乘法换加法{ ll res=0; while(b>0) { if(b&1) res=(res+a)%m; b>>=1; a=(a<<1)%m; } r...原创 2018-05-07 21:21:20 · 180 阅读 · 0 评论 -
线段树模板
void build(int p,int l,int r){ if(l==r){ tree[p]=a[l]; return ; } int mid=(l+r)>>1; build(p<<1,l,mid); build(p<<1|1,mid+1,r); tree[p]=tree[p&...原创 2018-05-07 18:00:41 · 76 阅读 · 0 评论 -
1-n中所有数的欧拉phi函数值(小于n且与n互素的整数个数
//1-n中所有数的欧拉phi函数值(小于n且与n互素的整数个数)int phi[1000005];void phi_table(int n){ for(int i=2; i<=n; ++i) phi[i]=0; phi[1]=1; for(int i=2; i<=n; ++i) if(!phi[i]) ...原创 2018-05-07 17:59:22 · 488 阅读 · 0 评论 -
组合数取余
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll; ll mod_pow(ll x, ll n, ll p){ ll res = 1; while(n){ if(n & ...原创 2018-05-25 22:21:02 · 200 阅读 · 0 评论 -
可持久化化Treap
/*计算区间最小值,插入,删除,查找,区间每个都加一个数,旋转,翻转可持久化Treap*/#include<iostream>#include<stdio.h>#include<algorithm>using namespace std;struct node{ node *l,*r; int v,w,delta,siz...原创 2018-06-02 19:37:54 · 183 阅读 · 0 评论 -
点的凸包
struct point{ double x,y; point(){} point(double x,double y):x(x),y(y){} point operator + (point &p){ return point(x+p.x,y+p.y); } point operator - (point &p){...原创 2018-06-04 21:16:48 · 156 阅读 · 0 评论 -
关节点(割点)
#include<iostream>#include<cstdio>#include<set>#include<vector>using namespace std;const int maxn=1e5+5;vector<vector<int> >g(maxn);int n;bool visited[ma...原创 2018-05-28 21:17:31 · 319 阅读 · 0 评论 -
KD 树
//KDtree#include<bits/stdc++.h>using namespace std;const int maxn=1e7+10;const int NIL=-1;struct node{ int location,l,r;};struct point{ int id,x,y; friend bool operator &l...原创 2018-05-28 19:51:47 · 99 阅读 · 0 评论 -
dijkstra算法+邻接表+优先队列
#include<bits/stdc++.h>using namespace std;const int maxn=1e4+5;const int inf=(1<<20);const int white=0;const int gray=1;const int black=2;int n;vector<pair<int,int> &g...原创 2018-05-28 19:51:04 · 300 阅读 · 0 评论 -
dijkstra 算法
#include<bits/stdc++.h>using namespace std;const int maxn=1e2+5;const int inf=(1<<21);const int white=0;const int gray=1;const int black=2;int n,m[maxn][maxn];void dijkstra(){...原创 2018-05-28 19:50:22 · 121 阅读 · 0 评论 -
Prim算法
//prim算法+输出路径+邻接矩阵#include<bits/stdc++.h>using namespace std;const int maxn=1e2+5;const int inf=(1<<21);const int white=0;const int gray=1;const int black=2;int n,m[maxn][maxn];...原创 2018-05-28 19:48:37 · 314 阅读 · 0 评论 -
并查集模板
//并查集int find(int u)//擒贼先擒王 { if(u==pre[u]){ return u; }else{ pre[u]=find(pre[u]);//路径压缩,使得第二次更快,直接找到老大 return pre[u]; }}void merge(int u,int v){ int t1=find(u); int t2=find(v); if(...原创 2018-05-28 19:47:52 · 139 阅读 · 0 评论 -
点的内包
#include<bits/stdc++.h>using namespace std;const int maxn=105;#define eps (1e-10)struct point{ double x,y; point(){} point(double x,double y):x(x),y(y){} point operator - ...原创 2018-06-02 21:22:40 · 140 阅读 · 0 评论