您的位置:首页 > 其它

18-1-22~28一周算法总结(DP,并查集)

2018-01-28 17:20 274 查看
26

查并集。

实际上是建立一棵树,拥有共同的结点则在一个集合里。

主要的三个操作。

const int maxn=1e5+5;
int f[maxn];
//int  rank[maxn];
void init(){//初始化//
for(int i=1;i<maxn;i++){
f[i]=i;
//		rank[i]=0;
}
}

int find(int x){//查找并优化到这条链上的所以结点都和根直接相连//
return f[x]==x?x:f[x]=find(f[x]);
}

void un(int x,int y){//连点// 未用rank优化,取消掉/则转变为rank优化//
int a=find(x);
int b=find(y);
if(a!=b){
//		if(rank[a]>rank)
f[b]=a;
/*		else{
f[a]=b;
if(rank[a]==rank[b])
rank[a]++;
}*/
}
}


[b]28


DP

其实自己到底知道了点啥,自己也不清楚。什么上课说的   dp,贪心,递归啥都统一起来,完全没有概念。但是自己的感觉有一点。1在动态的东西中找到对下一次的最优解。每次接触到一个数据,都要重新维护一次数据,但是能保证在当前情况下,是已经了解并且可知最优解了。2其实根本写不出来了hhh,

但是动态规划远远不止,百度百科“动态规划一般可分为线性动规,区域动规,树形动规,背包动规四类。”我到底知道什么会什么我其实也没有什么概念。今天只是写个想法ww,没有任何实质内容。等我以后能像ne一样"爽爽爽爽"了在写吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: