POJ
ShellDawn
Gu-Ah
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
No.27 - POJ2396 上下界网络流
POJ炸了,没测,但ZOJ1994同一题,可以过。 首先是矩阵,每个行和and列和有约束,找每个单元的值, 自然想到网络流,源点指向每个行节点,权值为行和。 每个列节点指向汇点,权值为列和。 行节点指向列节点的边为每个单元,初始权值为INF,所求边流量即为单元的权值。 但是,每个单元也有约束,所有行节点指向列节点的边也有约束。 自然转化成上下界网络流。 上下界网络流求法:\green{上下界网络流...原创 2019-07-25 15:53:58 · 190 阅读 · 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 · 200 阅读 · 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 · 212 阅读 · 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 · 217 阅读 · 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 · 261 阅读 · 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 · 265 阅读 · 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 · 279 阅读 · 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 · 152 阅读 · 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 · 180 阅读 · 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 · 317 阅读 · 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 · 293 阅读 · 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 · 231 阅读 · 0 评论 -
No.25 - POJ3308 实数网络流
构造图是关键 一个兵有两种耗费模式,要么Ri开销,要么Cj开销 自然想到源点到中间节点为Ri开销,中间节点到汇点为Cj开销,求最小割。 兵的关系如何表示? 伞兵没有带权值,所以只表示一种行和列的关联关系,所以想到中间节点分为Ri和Cj,每个伞兵链接Ri和Cj,正向边费用为INF,反向边费用为0。 关于反向边为什么为0\red{关于反向边为什么为0}关于反向边为什么为0:反向边的作用是修正之前伞兵的...原创 2019-07-22 08:27:45 · 280 阅读 · 0 评论 -
No.29 - POJ3422 最小费用最大流
这里必须要简单说一下题目: 求K次矩阵左上至右下的路径和最大,每次只能向下或向右走,每个单元格的值只能取一次。 第一眼直接敲了K次DP,直接WA。 为什么DP不可以?\red{为什么DP不可以?}为什么DP不可以? dp合理的基础是每次路径最优,则总体最优,基于贪心策略。 但对于矩阵,总觉得哪里对不上,肯定有反例。 于是: 4 3 1 2 3 5 0 2 1 1 1 4 2 3 3 4 1 2 这...原创 2019-07-26 22:16:22 · 204 阅读 · 0 评论 -
No.30 - POJ1325 - 匈牙利算法
首先题目是求二部图的最小点覆盖集。 最小点覆盖:\red{最小点覆盖:}最小点覆盖:取最少的点使图没有孤立边 有个转化定理:二部图\green{二部图}二部图 的 最小点覆盖集\blue{最小点覆盖集}最小点覆盖集 = 最大匹配\blue{最大匹配}最大匹配 很好理解,倘若最小点覆盖集之外,还有一对儿匹配,则该边是孤立边,该边中点任意一点应该划入最小点覆盖集。 相反,若最大匹配所包含的点之外,还有...原创 2019-07-28 00:29:04 · 327 阅读 · 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 · 243 阅读 · 0 评论 -
No.32 - POJ2125 - 关于最小割的割边或割点
简单描述一下题目: 一个有向图,每个点删除入边有个权值,删除出边有另一个权值。则删除所有边最小权值? 所以,一条边有两种删除方式,要么选择起始点删出边,要么选择终止点删入边。显然是求分配方案。 关于分配方案,自然想到网络流,图中拆点,分为入边点,和出边点,这样权值也分离了,原来的边按逻辑连接对应入边点,和出边点。 这里我犹豫了好久,点权怎么处理。 网络流点权是一定要转化成边权的,一般点权有两种处理...原创 2019-07-28 16:34:09 · 389 阅读 · 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 · 189 阅读 · 0 评论 -
POJ:1738
楼教主男人八题第二题,5W个叶子节点合并最小费用 最小权费和二叉树:GW算法 #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; #define maxn 50050 #define maxV 1000000001 int S = 1; int L = 0; long long V[maxn]; in...原创 2018-07-04 20:12:09 · 351 阅读 · 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 · 352 阅读 · 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 · 178 阅读 · 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 · 185 阅读 · 0 评论 -
POJ:1523
找关节点及其联通分量: Tarjan算法: /* Author:ShellDawn Date:2019-07-09 */ //#include<bits/stdc++.h> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define long ...原创 2019-07-09 23:16:38 · 319 阅读 · 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 · 228 阅读 · 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 · 169 阅读 · 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 · 262 阅读 · 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 · 228 阅读 · 0 评论 -
POJ:1737
楼教主男人八题中的第一题: 最大50座不同城市,组成全联通图的数量,不取模。 #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;cmath&gt; #include &lt;string&gt; #include &lt;vector&gt; #define maxn 5原创 2018-06-11 21:32:19 · 379 阅读 · 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 0x3f3f3f3f usin...原创 2019-07-14 21:32:03 · 209 阅读 · 0 评论 -
No.16 - POJ1149 猪圈与顾客的匹配 最大流
最大流: 新增源点0,汇点N+1 从源点发出m条边,每条边容量为猪圈m的存货, 然后m条边依次流经每个有对应猪圈钥匙的顾客,顾客之间连边为INF, 若不同猪圈流经同一个顾客,则边权相加。 这些边代表猪圈存货的限制。 从每个顾客发出一条边指向汇点,边权为顾客需求。 这些边代表顾客需求的限制。 此时,在这张图上最大流即可。 // ShellDawn // POJ1149 // No.16 #incl...原创 2019-07-15 09:30:06 · 274 阅读 · 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 · 188 阅读 · 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 · 248 阅读 · 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 · 239 阅读 · 0 评论 -
No.18 - POJ1386 判断联通 找欧拉链
首先判断是否为联通图 非联通图谈不上欧拉回路\red{非联通图谈不上欧拉回路}非联通图谈不上欧拉回路 欧拉链: 起始点,出度比入度多1 终止点,出度比入度少1 其他点,出度等于入度,所以出度加入度是偶数,满足欧拉回路规律。 cin>>string非常慢,字符串读取还是scanf("%s")大法好\orange{cin>&...原创 2019-07-15 17:15:54 · 321 阅读 · 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 · 206 阅读 · 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 · 171 阅读 · 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 · 212 阅读 · 0 评论
分享