程序代码
cnyali
这个作者很懒,什么都没留下…
展开
-
HDU1285拓扑排序模板题
#include<bits/stdc++.h>using namespace std;const int maxn=510;int rd[maxn],ans[maxn];vector<int> a[maxn];priority_queue<int ,vector<int>,greater<int> > q;int main(){ int n,m; while(cin>>n>>m){ for(int i=1原创 2022-05-02 16:27:29 · 433 阅读 · 0 评论 -
POJ2418字典树
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1000010;struct node{int p,ch[130];}a[maxn];int cnt=1,sum=0;char t[35];void out(int rt,int L){ for(int i=0;i<=129;i++){ int u=a[rt].ch[i];原创 2022-04-12 21:14:47 · 456 阅读 · 0 评论 -
字典树POJ2001
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=100010;struct node{ int p,ch[30],count; }a[maxn];int cnt,n;char tmp[maxn][30];int main(){ cnt=1; n=0; while(gets(tmp[++n])){ if(!tmp[n][0]原创 2022-04-10 21:39:08 · 421 阅读 · 0 评论 -
字典树poj2503
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=1000010;struct node{ int p,ch[30]; char t[15];}a[maxn];int cnt,n,T;char s1[15],s2[15],tmp[30];int main(){ cnt=1; while(gets(tmp)){ if(!t原创 2022-04-10 19:55:29 · 591 阅读 · 0 评论 -
POJ3630 字典树
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=100010;struct node{int p,ch[30];}a[maxn];int cnt,n,T;int main(){ char x[25]; cin>>T; while(T--){ cnt=0; memset(a,0,sizeof(a)); int f原创 2022-04-10 16:02:38 · 393 阅读 · 0 评论 -
SPLAY的各种操作
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int maxn=100010;struct node{ int v,s,fz,f,ch[2]; //ch[0]:left;ch[1]:right;}a[maxn];int root=1,t[maxn];void push_up(int rt){ int原创 2022-04-05 21:52:52 · 495 阅读 · 0 评论 -
splay poj1442
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int maxn=100010;struct node{ int v,s,f,ch[2]; //ch[0]:left;ch[1]:right;}a[maxn];int root=1,t[maxn];void push_up(int rt){ int l=原创 2022-04-05 19:55:59 · 103 阅读 · 0 评论 -
SPLAY 排序模板
#include<bits/stdc++.h>using namespace std;const int maxn=100010;struct node{ int v,s,f,ch[2]; //ch[0]:left;ch[1]:right;}a[maxn];int root=1;void out(int rt){ if(rt){out(a[rt].ch[0]); printf("%d ",a[rt].v); out(a[rt].ch[1]);}}void rotate(i原创 2022-04-03 20:50:16 · 401 阅读 · 0 评论 -
POJ1442 TREAP名次树
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;const int maxn=30010;struct node{ int v,w,s; node *fa,*l,*r; node(){s=1;w=rand();fa=l=r=NULL;}};node *root;int a[maxn];int js(node原创 2022-03-29 19:58:42 · 320 阅读 · 0 评论 -
TREAP 参考程序
//动态#include<bits/stdc++.h>using namespace std;struct node{ int v,w; node *fa,*l,*r; node(){w=rand();fa=l=r=NULL;}};node *root;void yx(node *B,node *A){ node *f=A->fa,*y=B->r; B->r=A; A->fa=B; A->l=y; if(y!=NULL)y->fa=原创 2022-03-27 20:01:29 · 440 阅读 · 0 评论 -
POJ 2763树剖+线段树+树状数组
代码分享原创 2022-03-20 20:00:07 · 314 阅读 · 1 评论 -
树上差分(LUOGU3128)
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int mod = 1e8;const int Max = 5e4 + 10;const int Max2 = 5e3 + 10;struct Edge{ int to, next;}edge[Max<<1]; int n, k;int head[Max], tot;转载 2021-05-25 19:46:59 · 166 阅读 · 0 评论 -
旋转卡壳,最远的距离
#include <cmath> #include <algorithm> #include <iostream> using namespace std; #define MAXN 50005 struct Point{ int x, y; bool operator < (const Point& _P) const{ return y<_P.y||(y==_P.y&&x<_P.原创 2021-03-09 21:19:05 · 192 阅读 · 0 评论 -
二维凸包 模板代码
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>const int maxn=10000+10;using namespace std;struct node{double x,y;};node p[maxn],z[maxn];bool cmp(node u,node v){return u.x<v.x;}bool cmpxl(node a,node原创 2021-03-02 20:35:22 · 183 阅读 · 0 评论 -
最小费用最大流模板
#define REP(i, s, e) for(register int i = s; i <= e ;i++)#include<bits/stdc++.h>using namespace std;const int maxn = 5000 + 5, maxm = 50000 + 5, inf((((1 << 30) - 1) << 1) + 1);int bg[maxn], ne[maxm << 1], to[maxm << 1]原创 2021-02-25 21:09:23 · 169 阅读 · 0 评论 -
网络流模板程序
网络流模板程序EK#include<bits/stdc++.h>using namespace std;const int maxn = 210;const long long INF =1152921504606846976;long long cap[maxn][maxn], flow[maxn][maxn];long long n,m,p[maxn];long long a[maxn];;int main(){ int s,t; cin>>n>>原创 2021-02-21 20:44:47 · 162 阅读 · 0 评论 -
Python 程序设计快速入门简易教程
Python 程序设计快速入门简易教程Python语言快速检索一些需要知道的事一个简单的Python程序Python的基本数据类型Python的基本运算符Python的常用函数// import 库的用法分支语句循环结构字符串列表的使用元组自定义函数使用库编程Thanks for reading...Python语言快速检索Python的语法简洁,实用,假设你已有C++程序设计基础,接下来跟着我走,瞬间学会Python语言,对于信息学竞赛的学生可以用Python出随机数据是非常方便的,如果感兴趣,还可以原创 2020-06-03 17:20:56 · 1229 阅读 · 0 评论 -
表达式直接求值——分治做法
#include#include#include#include#define MAXN 101char s[MAXN];int calac(int L, int R){ int i, p = -1, lv = 0; int m = 0; for (i = L; i <= R; i++){ switch (s[i]){原创 2014-08-22 16:46:03 · 896 阅读 · 1 评论 -
表达式求值——栈实现
#include #include #include #define MAX 100char stack[MAX];int top=-1;void fun( char a[],char b[]){ int i,len,j; len=strlen(a); j=-1; for(i=0;i<len;i++) { switch(a[i原创 2014-08-22 16:56:49 · 682 阅读 · 0 评论 -
石子合并—链式
问题描述设有N堆沙子排成一排,其编号为1,2,3,…,N(N【输入格式】 输入由若干行组成,第一行有一个整数,n(1≤n≤100);表示沙子堆数。第二行是一个整数m是每堆沙子的数量。 【输出格式】 一个整数,归并的最小代价。【输入样例】713 7 8 16 21 4 18【输出样例】239原创 2014-08-28 08:14:37 · 684 阅读 · 0 评论 -
网络流最大流算法参考程序
#include#includeint c[101][101],f[101][101],p[101],m,n,d[10000],pre[101];int main(){ int i,j,k,top,last; scanf("%d%d",&n,&m); int x,y,z; for(i=1;i scanf("%d%d%d",&x,原创 2014-09-14 11:40:53 · 847 阅读 · 1 评论 -
匈牙利参考程序
#include#includeint a[101][101],d[101],m,n,p[101];int dfs(int x){ int i,j,k; for(i=1;i<=n;i++) if(a[x][i] && !p[i]){ p[i]=1; if(!d[i] || dfs(d[i])){原创 2014-09-14 11:16:27 · 758 阅读 · 0 评论 -
扩展欧几里得算法解同余方程(NOIP2012)
同余方程 (mod.cpp/c/pas) 【问题描述】 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。 【输入】 输入文件为 mod.in。 输入只有一行,包原创 2014-11-04 23:37:45 · 714 阅读 · 0 评论 -
NOIP2014day1T2联合权值新版题解(优化的邻接表)
之前的解题报告无法过全部数据,因邻接表没有优化,统计权值方式也太暴力,做以下修改1、建邻接表时加一个数组来记录每个节点的尾指针位置2、统计每个点周围所有点权值最大的两个点3、利用x1*y1+x1*y2+x1*y3....=x1*(y1+y2+y3+...)进行简单优化加速程序如下,完爆官方所有数据:#include#includeconst int maxn=200010,原创 2014-12-01 00:46:28 · 2392 阅读 · 0 评论 -
好用的链式前向星
对于已经的一个图,我们存储它的方式有很多种,其中常用的有1、邻接矩阵(建图简单,使用简单,但是遍历图时间复杂度太大)2、邻接表(建图较复杂,对于特殊的米字图时间复杂度太大)3、优化的邻接表,在我前面一片文章里有介绍,就是为每一个节点保存一个LAST数组(最后的点编号),可以极大提高建图速度http://blog.csdn.net/cnyali/article/details/416原创 2014-12-01 11:18:47 · 2090 阅读 · 2 评论 -
POJ2386 Lake Counting 图的遍历
题目大意:有一个N*M的矩阵,W表示陆地,连接方向为8个方向,问总共有多少个岛屿题解,直接用BFS遍历图即可统计出#include#include#include#includeconst int maxn=110;char s[maxn];int a[maxn][maxn],q[maxn*maxn][2],m,n;int d[8][2]={{0,1},{1,0},{-1,0原创 2014-12-20 22:41:47 · 666 阅读 · 0 评论 -
POJ1502 MPI Maelstrom -DIJKSTRA练习系列
本题的大意是有N个处理器,任何两个处理器之间的传输信息是需要时间的,有的处理器之间不能传输信息,给出一个处理器传输信息时间的二维矩阵的下三角,X表示不能传输,问从第一个处理器传输到所有处理器所需要的总时间。本地是典型的DIJKSTRA水题,注意输入时需要用字符串输入,程序如下:#include#include#includeconst int maxn=110,maxint=100000原创 2014-12-08 23:59:42 · 798 阅读 · 0 评论 -
POJ2387 Til the Cows Come Home -DIJKSTRA 练习
题目大意是:有N个牛棚和T条边相连,每条边有个权值,问1号到N号牛棚之间的最短距离本题是又是DIJKSTRA最短路水题,注意任何两个牛棚之间可能有多条路相连,输入时先输入边,再输入点,程序如下:#include#include#includeconst int maxn=1010,maxint=1000000000;int a[maxn][maxn],d[maxn],p[maxn]原创 2014-12-09 00:13:14 · 702 阅读 · 0 评论 -
POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
题目大意:池塘里有N片荷叶,给出每片荷叶的坐标,青蛙要从X号荷叶跳到Y号荷叶,问单步最少要跳多少才能到达。题解:这道题可以采取类FLOYD的方法,要从X跳到Y,当越来越多的荷叶做为中间点来跳的时候,显然有可能单步跳的距离更短。程序如下:#include#include#includeconst int maxn=210;struct point{int x,y;}p[maxn];原创 2014-12-10 17:02:53 · 914 阅读 · 0 评论 -
高精度加法减法乘法除法
//高精度加法#include#include#includeint a[1000],b[1000],c[1000];char s[1000];int main(){ int i,j,k,m,n; int alen,blen,clen; gets(s); alen=strlen(s); for(i=alen-1;i>=0;i--) a[alen-i]=s[i]-'0'原创 2015-02-03 12:00:33 · 3121 阅读 · 0 评论 -
POJ2502 Subway -DIJKSTRA最短路练习
题目大意:有个小朋友要从家里到学校,可以通过走路或者乘地铁的方式到达,走路每小时10KM,乘地铁每小时40KM,他可以走路+换乘地铁等多种方式到达,给出家,地铁站和学校的坐标,请问他到达学校的最短时间是多少分钟(四舍五入),假设没有等待地铁时间。题解:本题是一道要转换模型的最短路题,要将距离转化成时间,将家,每个地铁站,学校转换成点,最后求家到学校的最短时间,需要注意的是,地铁线不是直的,譬如原创 2014-12-10 16:18:45 · 785 阅读 · 0 评论 -
线段树计算线段填色
#include#includestruct node{ int s,t,c; struct node *l,*r;};struct node *h;int m,n;int c_sum[100010];void create_tree(struct node *x){ int mid; struct node *p,*q; if(x->t-x->s<=1)return;原创 2015-02-06 11:45:42 · 609 阅读 · 0 评论 -
POJ 3259 Wormholes 链式前向星+SPFA练习
题目大意:给出一个无向图,再给出W个虫洞,虫洞的意思就是权值为负的边,问你可否找到负权环题解:SPFA中,如果每个点进队列超过N次,就可以判断有负全环。#include#include#include#includeconst int maxn=510,inf=1000000000;int e,to[maxn*12],next[maxn*12],begin[maxn],w[max原创 2014-12-14 15:27:23 · 721 阅读 · 0 评论 -
NOIP2014DAY2T2
#include#includeconst int maxn=10010,maxm=200010;int e,to[maxm],next[maxm],begin[maxn];int e1,to1[maxm],next1[maxm],begin1[maxn];int p[maxn],pd[maxn],px[maxn];int q[maxn],d[maxn];void add(int x原创 2014-12-02 21:21:27 · 723 阅读 · 0 评论 -
POJ2349最小生成树
#include#include#includeconst int maxn=510;const double inf=1000000000.0;double a[maxn][maxn],d[maxn],e[maxn];int x[maxn],y[maxn],p[maxn];int main(){ int i,j,k,m,n,T,v=-1,u; double tmp,min;原创 2015-03-31 20:56:25 · 664 阅读 · 0 评论 -
最小生成树之PRIM算法
#include#includeconst int maxn=110,inf=1000000000;int a[maxn][maxn],d[maxn],p[maxn];int main(){ int i,j,k,m,n,ans;while(scanf("%d",&n)!=EOF){ ans=0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) a原创 2015-03-31 20:53:46 · 571 阅读 · 0 评论 -
POJ2031 最小生成树
#include#include#includeconst int maxn=110;const float inf=1000000000.0;int p[maxn];float a[maxn][maxn],d[maxn],x[maxn],y[maxn],z[maxn],r[maxn];int main(){ int i,j,k,m,n; float ans; while(1原创 2015-03-31 20:56:30 · 518 阅读 · 0 评论 -
LCA之TARJAN算法
#include#includeconst int maxn=1000;int e,to[maxn],next[maxn],begin[maxn];int e1,to1[maxn*10],next1[maxn*10],begin1[maxn];int p[maxn],fa[maxn],t[maxn];int find(int x){ if(fa[x]!=x) fa[x]=fin原创 2015-03-31 20:57:52 · 554 阅读 · 0 评论 -
BFS模版程序
#include#include#includestruct node{ int x,y,s;};struct node a[10000+10];int map[101][101],p[101][101],d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};int main(){ int i,j,k,m,n; int f,l,u,v; scanf("%d%原创 2015-08-07 15:23:04 · 844 阅读 · 0 评论 -
字符串HASH模板
/* 从b串中寻找和a串长度相同的子串,返回开始位置 不保证绝对正确,发生冲突概率为O(sqrt(n)), n为哈希函数的最大值 */ #include#include#include#define ull unsigned long long const ull B = 1e8+7; const int MAXN = 5010; char转载 2015-08-09 01:15:00 · 1348 阅读 · 0 评论