POJ
ShellDawn
Gu-Ah
展开
-
POJ:1737
楼教主男人八题中的第一题: 最大50座不同城市,组成全联通图的数量,不取模。#include <cstdio>#include <cstring>#include <cmath>#include <string>#include <vector>#define maxn 5原创 2018-06-11 21:32:19 · 306 阅读 · 0 评论 -
No.36 - POJ1966 图的联通度-枚举T网络流
求一个图的联通度,就是找图中固定源点,然后枚举汇点求最小割。然后最小割中最小的一个就是图的联通度。#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<vector>#include<math.h>#defin...原创 2019-07-30 00:01:39 · 122 阅读 · 0 评论 -
No.35 - POJ3624 -01背包
01背包模版题:倒着扫开销,可以避免重复使用物品多重背包:正着扫开销,每个物品可以多次使用// ShellDawn// POJ3624// No.35#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<vector>...原创 2019-07-29 20:11:54 · 108 阅读 · 0 评论 -
No.33 - POJ1523 邻接表Tarjan算法 找关节点
Tarjan算法核心:void dfs(int now,int v){ V[now] = low[now] = v; for(int i=pre[now];i!=0;i=E[i].pre){ if(V[E[i].to] == 0){ dfs(E[i].to,v+1); low[now] = min(low[now],...原创 2019-07-29 13:45:52 · 216 阅读 · 0 评论 -
No.19 - POJ1201 差分约束 多个不等式约束 50000个点
Bellman-Ford求差分约束。cin超时,scanf才200ms,能用scanf不用cin\red{cin超时,scanf才200ms,能用scanf不用cin}cin超时,scanf才200ms,能用scanf不用cin// ShellDawn// POJ1201// No.19#include<cstdio>#include<algorithm>#...原创 2019-07-16 23:23:04 · 209 阅读 · 0 评论 -
No.26 - POJ1815 最小割点
网络流求最小割点,每个点分裂为入点和出点,边权为1注:S,T分裂为边权为INF的两个点出点到其它入点边权为INF// ShellDawn// POJ1815// No.26#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#define MM...原创 2019-07-23 19:26:21 · 191 阅读 · 0 评论 -
No.23 - POJ1459 邻接矩阵网络流
// ShellDawn// POJ1459// No.23#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#define MM(x) memset(x,0,sizeof(x))#define IN...原创 2019-07-18 22:28:33 · 159 阅读 · 0 评论 -
No.22 - POJ2112 网络流求二部图分配方案
首先floyd求最短路然后构建网络流,其中源点到每一头牛容量为1,每一个挤奶器到汇点容量为m牛到挤奶器容量为1.二分答案,构建网络流。// ShellDawn// POJ2112// No.22#include<cstdio>#include<cstring>#include<algorithm>#include<queue>...原创 2019-07-18 17:59:26 · 163 阅读 · 0 评论 -
No.8 - POJ1135 迪杰斯特拉 最短路 非负权
Dijkstra算法:// ShellDawn// POJ1135// No.8#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define MM(x) memset(x,0,sizeof(x)) using namespace std;...原创 2019-07-11 22:48:17 · 148 阅读 · 0 评论 -
No.20 - POJ1780 咬尾蛇规律的数字排列
这是固定规律n位首位相接组成n+10^n-1个数则,以n-1个0开始以n-1个0结束直接用dfs搜索,扩展,若扩展失败,一定是因为0,直接以1扩展即可。// ShellDawn// POJ1780// No.20#include<cstdio>#include<iostream>#include<cstring>#include&l...原创 2019-07-17 23:26:19 · 224 阅读 · 0 评论 -
No.27 - POJ2396 上下界网络流
POJ炸了,没测,但ZOJ1994同一题,可以过。首先是矩阵,每个行和and列和有约束,找每个单元的值,自然想到网络流,源点指向每个行节点,权值为行和。每个列节点指向汇点,权值为列和。行节点指向列节点的边为每个单元,初始权值为INF,所求边流量即为单元的权值。但是,每个单元也有约束,所有行节点指向列节点的边也有约束。自然转化成上下界网络流。上下界网络流求法:\green{上下界网络流...原创 2019-07-25 15:53:58 · 133 阅读 · 0 评论 -
No.31- POJ1469 二部图最大匹配模版题
// ShellDawn// POJ1469// No.31#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#include<vector>#include<math.h>#define MM(x,y) memset(...原创 2019-07-28 04:25:22 · 181 阅读 · 0 评论 -
No.30 - POJ1325 - 匈牙利算法
首先题目是求二部图的最小点覆盖集。最小点覆盖:\red{最小点覆盖:}最小点覆盖:取最少的点使图没有孤立边有个转化定理:二部图\green{二部图}二部图 的 最小点覆盖集\blue{最小点覆盖集}最小点覆盖集 = 最大匹配\blue{最大匹配}最大匹配很好理解,倘若最小点覆盖集之外,还有一对儿匹配,则该边是孤立边,该边中点任意一点应该划入最小点覆盖集。相反,若最大匹配所包含的点之外,还有...原创 2019-07-28 00:29:04 · 237 阅读 · 0 评论 -
No.29 - POJ3422 最小费用最大流
这里必须要简单说一下题目:求K次矩阵左上至右下的路径和最大,每次只能向下或向右走,每个单元格的值只能取一次。第一眼直接敲了K次DP,直接WA。为什么DP不可以?\red{为什么DP不可以?}为什么DP不可以?dp合理的基础是每次路径最优,则总体最优,基于贪心策略。但对于矩阵,总觉得哪里对不上,肯定有反例。于是:4 31 2 3 50 2 1 11 4 2 33 4 1 2这...原创 2019-07-26 22:16:22 · 149 阅读 · 0 评论 -
No.25 - POJ3308 实数网络流
构造图是关键一个兵有两种耗费模式,要么Ri开销,要么Cj开销自然想到源点到中间节点为Ri开销,中间节点到汇点为Cj开销,求最小割。兵的关系如何表示?伞兵没有带权值,所以只表示一种行和列的关联关系,所以想到中间节点分为Ri和Cj,每个伞兵链接Ri和Cj,正向边费用为INF,反向边费用为0。关于反向边为什么为0\red{关于反向边为什么为0}关于反向边为什么为0:反向边的作用是修正之前伞兵的...原创 2019-07-22 08:27:45 · 214 阅读 · 0 评论 -
No.24 - POJ3469 邻接表网络流
经典网络流模版题:首先,求最小割就是求最大流。稀疏图,采用数组模拟二维动态链表。小trick\red{小trick}小trick:在会产生回边的地方,直接加入双向边,互相索引,提高DFS速度大trick\red{大trick}大trick:stdio.h 比 cstdio 快一倍// ShellDawn// POJ3469// No.24#include<stdio.h&g...原创 2019-07-21 15:52:44 · 173 阅读 · 0 评论 -
No.7 - POJ1679 克鲁斯卡尔 等权边 判断 MST唯一
kruskal判断MST唯一:需要另外三个标记,k代表是否重边,u代表是否第一次使用,d代表删除该边// ShellDawn// POJ1679// No.7#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define MM(x) mem...原创 2019-07-11 21:44:55 · 213 阅读 · 0 评论 -
No.6 - POJ1789 prim MST 遍历点 稠密图
Prim算法:// ShellDawn// POJ1789// No.6#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<string>#define MM(x) memset(x,0,sizeof(x))us...原创 2019-07-11 20:44:35 · 151 阅读 · 0 评论 -
No.14 - POJ2263 迪杰斯塔拉 求路径最大承重
Dijsktra + 贪心:// ShellDawn// POJ2263// No.14#include<algorithm>#include<cstring>#include<iostream>#include<map>#include<cstdio>#define MM(x) memset(x,0,sizeof(x...原创 2019-07-14 14:14:29 · 200 阅读 · 0 评论 -
No.13 - POJ2570 状压求字符串并集
状态压缩:注:这题有大量的查询操作,printf超时,putchar 70ms,醉了\red{注:这题有大量的查询操作,printf超时,putchar\ 70ms,醉了}注:这题有大量的查询操作,printf超时,putchar 70ms,醉了putchar要比printf快!!!!!!\orange{putchar 要比 printf 快!!!!!!}putchar要比...原创 2019-07-14 13:23:38 · 117 阅读 · 0 评论 -
No.12 - POJ3259 SPFA求负权值回路 比Floyd快
SPFA求负权值回路:注:SPFA求负权值回路要比Floyd快!\red{注:SPFA求负权值回路要比Floyd快!}注:SPFA求负权值回路要比Floyd快!// ShellDawn// POJ3259// No.12#include<cstdio>#include<cstring>#include<algorithm>#include<...原创 2019-07-14 12:05:09 · 162 阅读 · 0 评论 -
POJ:1523
找关节点及其联通分量:Tarjan算法:/*Author:ShellDawnDate:2019-07-09*///#include<bits/stdc++.h>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define long ...原创 2019-07-09 23:16:38 · 208 阅读 · 0 评论 -
No.11 - POJ3268 SPFA 最短路
SPFA算法,求两次最短路:// ShellDawn// POJ3268// No.11#include<algorithm>#include<cstdio>#include<iostream>#include<cstring>#include<queue>#include<vector>#define ...原创 2019-07-13 16:32:31 · 122 阅读 · 0 评论 -
No.10 - POJ1556 计算几何 判断点在直线
Cross函数判断点是否在直线上勾股定理求斜边长度判断墙是否阻挡两点光线Dijsktra计算最短路// ShellDawn// POJ1556// No.10#include<algorithm>#include<cstring>#include<cstdio>#include<iostream>#include<c...原创 2019-07-13 15:48:06 · 133 阅读 · 0 评论 -
No.9 - POJ2240 Floyd求负权值环路
Floyd求环:// ShellDawn// POJ2240// No.9#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#include<iostream>#include<map>#define MM(x) mems...原创 2019-07-12 18:53:36 · 276 阅读 · 0 评论 -
POJ:1738
楼教主男人八题第二题,5W个叶子节点合并最小费用最小权费和二叉树:GW算法#include &lt;cstdio&gt;#include &lt;cstring&gt;using namespace std;#define maxn 50050#define maxV 1000000001int S = 1;int L = 0;long long V[maxn];in...原创 2018-07-04 20:12:09 · 272 阅读 · 0 评论 -
No.1 - POJ1659 已知节点度构图
给出每个点邻接点的数量,求出邻接矩阵。维护一个堆,不断弹出根,减去后面每个值。// ShellDawn// 2019-07-10// POJ1659#include<cstdio>#include<algorithm>#include<iostream>#include<queue>#include<cstring>...原创 2019-07-10 15:39:30 · 169 阅读 · 0 评论 -
No.2 POJ1562
DFS// ShellDawn// 2019-07-10// POJ1562#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#define MM(x) memset(x,0,sizeof(x));using namespace std;#...原创 2019-07-10 15:58:32 · 146 阅读 · 0 评论 -
No.5 - POJ1861 克鲁斯卡尔 MST 边贪心 并查集
kruskal算法:// ShellDawn// POJ1861// No.5#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define MM(x) memset(x,0,sizeof(x))using namespace std;...原创 2019-07-11 20:16:13 · 125 阅读 · 0 评论 -
No.21 -POJ2288 状压dp求汉密顿回路
// ShellDawn// POJ2288// No.21#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<queue>#define MM(x) memset(x,0,sizeof(x))#define LL...原创 2019-07-18 09:21:06 · 147 阅读 · 0 评论 -
No.18 - POJ1386 判断联通 找欧拉链
首先判断是否为联通图非联通图谈不上欧拉回路\red{非联通图谈不上欧拉回路}非联通图谈不上欧拉回路欧拉链:起始点,出度比入度多1终止点,出度比入度少1其他点,出度等于入度,所以出度加入度是偶数,满足欧拉回路规律。cin>>string非常慢,字符串读取还是scanf("%s")大法好\orange{cin>&...原创 2019-07-15 17:15:54 · 243 阅读 · 0 评论 -
No.17 POJ1300 判断欧拉回路
欧拉回路:两种情况所有点度为偶数,且出发点一定是终止点有两个奇数度点,分别为出发点和终止点// ShellDawn// POJ1300// No.17#include<cstdio> #include<iostream>#include<cstring>#include<algorithm>#define MM(x) me...原创 2019-07-15 16:27:43 · 183 阅读 · 0 评论 -
No.4 - POJ2585
拓扑排序:// ShellDawn// POJ2585// No.4#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#include<string>#define MM(x) mems...原创 2019-07-11 11:25:42 · 189 阅读 · 0 评论 -
No.3 - POJ1094 拓扑排序
拓扑排序:// ShellDawn// POJ1094// No.3#include<algorithm>#include<cstdio>#include<iostream>#include<cstring>#include<queue>#define MM(x) memset(x,0,sizeof(x));usin...原创 2019-07-11 10:52:37 · 138 阅读 · 0 评论 -
No.16 - POJ1149 猪圈与顾客的匹配 最大流
最大流:新增源点0,汇点N+1从源点发出m条边,每条边容量为猪圈m的存货,然后m条边依次流经每个有对应猪圈钥匙的顾客,顾客之间连边为INF,若不同猪圈流经同一个顾客,则边权相加。这些边代表猪圈存货的限制。从每个顾客发出一条边指向汇点,边权为顾客需求。这些边代表顾客需求的限制。此时,在这张图上最大流即可。// ShellDawn// POJ1149// No.16#incl...原创 2019-07-15 09:30:06 · 227 阅读 · 0 评论 -
No.15 - POJ1273 网络流Dinic
Dinic算法:// ShellDawn// POJ1273// No.15#include<cstdio>#include<iostream>#include<cstring>#include<queue>#define MM(x) memset(x,0,sizeof(x))#define INF 0x3f3f3f3fusin...原创 2019-07-14 21:32:03 · 152 阅读 · 0 评论 -
No.32 - POJ2125 - 关于最小割的割边或割点
简单描述一下题目:一个有向图,每个点删除入边有个权值,删除出边有另一个权值。则删除所有边最小权值?所以,一条边有两种删除方式,要么选择起始点删出边,要么选择终止点删入边。显然是求分配方案。关于分配方案,自然想到网络流,图中拆点,分为入边点,和出边点,这样权值也分离了,原来的边按逻辑连接对应入边点,和出边点。这里我犹豫了好久,点权怎么处理。网络流点权是一定要转化成边权的,一般点权有两种处理...原创 2019-07-28 16:34:09 · 311 阅读 · 0 评论