ACM的几种比较经典的算法怎么编程
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 07:02:44
ACM的几种比较经典的算法怎么编程
用DEV怎么编程?
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成树(先写个prim,kruscal要用并查集,不好写)
3.大数(高精度)加减乘除
4.二分查找.(代码可在五行以内)
5.叉乘、判线段相交、然后写个凸包.
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)
7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.
8.调用系统的qsort,技巧很多,慢慢掌握.
9.任意进制间的转换
用DEV怎么编程?
1.最短路(Floyd、Dijstra,BellmanFord)
2.最小生成树(先写个prim,kruscal要用并查集,不好写)
3.大数(高精度)加减乘除
4.二分查找.(代码可在五行以内)
5.叉乘、判线段相交、然后写个凸包.
6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简)
7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式.
8.调用系统的qsort,技巧很多,慢慢掌握.
9.任意进制间的转换
我有个prim+heap先给你
#include
#include
#include
#include
#include
using namespace std;
struct lin
{
lin*n;
int x,l;
};
struct dui
{
int x,y,l;
};
const int maxm=20001;
const int maxn=100001;
lin *a[maxm];
lin *p;
bool o[maxm];
int m,n,x,y,z,t=0;
long ans=0;
dui d[maxn*2];
void swap(dui &x,dui &y)
{
dui z;
z=x;
x=y;
y=z;
}
void rd(int x,int y,int z)
{
d[++t].x=x;
d[t].y=y;
d[t].l=z;
x=t;
while ((x>1)&&(d[x].ln!=0)
{
p=p->n;
if (o[p->x]) rd(x,p->x,p->l);
}
}
void chud()
{
d[1]=d[t--];
int p=1;
int q;
while (p*2n;
a[x]->n=p;
p=new(lin);
p->x=x;
p->l=z;
p->n=a[y]->n;
a[y]->n=p;
}
memset(o,true,sizeof(o));
zj(1);
dui w;
for (int i=1;i
#include
#include
#include
#include
#include
using namespace std;
struct lin
{
lin*n;
int x,l;
};
struct dui
{
int x,y,l;
};
const int maxm=20001;
const int maxn=100001;
lin *a[maxm];
lin *p;
bool o[maxm];
int m,n,x,y,z,t=0;
long ans=0;
dui d[maxn*2];
void swap(dui &x,dui &y)
{
dui z;
z=x;
x=y;
y=z;
}
void rd(int x,int y,int z)
{
d[++t].x=x;
d[t].y=y;
d[t].l=z;
x=t;
while ((x>1)&&(d[x].ln!=0)
{
p=p->n;
if (o[p->x]) rd(x,p->x,p->l);
}
}
void chud()
{
d[1]=d[t--];
int p=1;
int q;
while (p*2n;
a[x]->n=p;
p=new(lin);
p->x=x;
p->l=z;
p->n=a[y]->n;
a[y]->n=p;
}
memset(o,true,sizeof(o));
zj(1);
dui w;
for (int i=1;i