摘要: 算法 二分图+匹配 思路 节点 列与行皆为节点 边 一个子链接一个边与一个列。 0要素 一个子不可在两列或是两行。所以连接一个行与一个趔 1要素 每行只可有一个子,列也一样。 代码 #include<cmath> #include<cstdio> #include<cstring> #include 阅读全文
posted @ 2020-04-18 10:46 人生有味是清欢 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 判定 染色法 bool dfs(int x, int color) { v[x] = color; for (unsigned int i = 0; i < e[x].size(); i++) { int y = e[x][i].first; if (v[y]) { if (v[y] == colo 阅读全文
posted @ 2020-04-18 09:31 人生有味是清欢 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 算法 二分图+匹配 思路 边 一个骨牌链接两个格子,格子为节点,骨牌为连接两个格子的边。 0要素 将格子黑白染色,同色格子间没有边。 1要素 每个格子只能被1个骨牌覆盖,唯一边。 知识 匈牙利 bool dfs(int x) { for (unsigned int i = 0; i < e[x].s 阅读全文
posted @ 2020-04-18 09:28 人生有味是清欢 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 算法 二分图+判定 思路 显然要让答案最小,应让怨气值较大的不在同一监狱。尽量让较小的在同一个监狱里矛盾。及分成两个集合。满足二分图。而后二分答案,以最后的怨气值为mid,凡大于mid的罪犯都需在不同集合,只需判定是否为二分图即可。 核心 二分图判定+染色法 bool dfs(int x, int 阅读全文
posted @ 2020-04-18 09:13 人生有味是清欢 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 导言 一道非常好的Floyd最短路练习题,从算法本质上出的题目,对于初学Floyd算法的人来说是绝佳的练习题 解题难度:普及+/提高 重要程度:提高+/省选- 算法导入 关于floyed 首先我们从Floyd算法谈起,这是一个看上去很简单的算法-事实上也的确很简单,整个算法一共只有五行,三重循环+一 阅读全文
posted @ 2020-04-17 18:15 人生有味是清欢 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 吐槽 为什么一些明显不对的算法也过了!!!!!!!!!!! 思路 明显是最短路。加一个文化判断即可。 #include<cstdio> #include<cstring> int min(int x,int y){return x<y?x:y;} int c[105],n;//c数组存文化种类 in 阅读全文
posted @ 2020-04-17 17:26 人生有味是清欢 阅读(142) 评论(0) 推荐(0) 编辑
摘要: Dijkstra+堆优化 不带小根堆 #include<bits/stdc++.h> using namespace std; const int maxn=2505; #define INF 1e9 vector<pair<int,int> >e[maxn]; int d[maxn]; void 阅读全文
posted @ 2020-04-17 15:46 人生有味是清欢 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 算法 floyed+传递闭包 代码 #include<bits/stdc++.h> using namespace std; map<string,int>mp; string st[30]; string st1,st2; bool g[30][30]; bool used[30]; int su 阅读全文
posted @ 2020-04-17 15:20 人生有味是清欢 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 算法 floyed(改版) 思路 关于路径,可用最短路;保存路径信息,可用floyed; 核心 g[i][j]=min(g[i][j],max(g[i][k],g[k][j])); 代码 #include<bits/stdc++.h> using namespace std; int n,m,Q; 阅读全文
posted @ 2020-04-17 14:39 人生有味是清欢 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 算法 floyed+倍增 思路 一看到2^k,一定与倍增有关;数据小加上最短路,floyed;可以看做两点之间距离(道路条数 )为2^k的点之间有一条边为一(1秒到达); 代码 #include<bits/stdc++.h> using namespace std; int dis[60][60], 阅读全文
posted @ 2020-04-17 13:14 人生有味是清欢 阅读(162) 评论(1) 推荐(0) 编辑