自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 No.37- LeetCode662 - 树的最大宽度

注:\red{注:}注: 求树左右边界最优时间也是O(N),需要访问每个节点才能确定边界,推荐先序遍历。class Solution {public: long long ans = 0; vector<long long> L; // 先序遍历 void dfs(TreeNode* now,long long v,long long l){ ...

2019-07-30 23:21:43 123

原创 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 115

原创 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 98

原创 No.34 - Codeforces777B 田忌赛马 贪心

题目要求给出两种策略:1,田忌要尽可能少输2,田忌要尽可能多赢无非就是改变赢局和平局的比例。当尽可能少输时,那就要先采取平局,然后再尽量取胜,剩下就是必输了。当尽可能多赢时,那就要先尽量取胜,然后尽量平局,剩下就是必输了。枚举时暴力做的,可能比最优双端队列贪心要慢。// ShellDawn// Codeforces 777B// No.34#include<stdio....

2019-07-29 17:34:34 199

原创 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 206

原创 No.32 - POJ2125 - 关于最小割的割边或割点

简单描述一下题目:一个有向图,每个点删除入边有个权值,删除出边有另一个权值。则删除所有边最小权值?所以,一条边有两种删除方式,要么选择起始点删出边,要么选择终止点删入边。显然是求分配方案。关于分配方案,自然想到网络流,图中拆点,分为入边点,和出边点,这样权值也分离了,原来的边按逻辑连接对应入边点,和出边点。这里我犹豫了好久,点权怎么处理。网络流点权是一定要转化成边权的,一般点权有两种处理...

2019-07-28 16:34:09 296

原创 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 171

原创 No.30 - POJ1325 - 匈牙利算法

首先题目是求二部图的最小点覆盖集。最小点覆盖:\red{最小点覆盖:}最小点覆盖:取最少的点使图没有孤立边有个转化定理:二部图\green{二部图}二部图 的 最小点覆盖集\blue{最小点覆盖集}最小点覆盖集 = 最大匹配\blue{最大匹配}最大匹配很好理解,倘若最小点覆盖集之外,还有一对儿匹配,则该边是孤立边,该边中点任意一点应该划入最小点覆盖集。相反,若最大匹配所包含的点之外,还有...

2019-07-28 00:29:04 226

原创 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 140

原创 No.28 - 牛客OJ- 2019校招真题-拼多多-选靓号

暴力+贪心:枚举变为K次0~9,每次都最小费用,最小字典序最小字典序,贪心思路,同费用下,先大值变小值,从前往后边,再小值变大值,从后往前边。注:\red{注:}注:string初始化 string s(S) 相当于赋值string初始化 string s(L,‘9’) 相当于最大序#include<cstdio>#include<cstring>#incl...

2019-07-25 23:58:12 916

原创 No.27 - POJ2396 上下界网络流

POJ炸了,没测,但ZOJ1994同一题,可以过。首先是矩阵,每个行和and列和有约束,找每个单元的值,自然想到网络流,源点指向每个行节点,权值为行和。每个列节点指向汇点,权值为列和。行节点指向列节点的边为每个单元,初始权值为INF,所求边流量即为单元的权值。但是,每个单元也有约束,所有行节点指向列节点的边也有约束。自然转化成上下界网络流。上下界网络流求法:\green{上下界网络流...

2019-07-25 15:53:58 121

原创 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 179

原创 No.25 - POJ3308 实数网络流

构造图是关键一个兵有两种耗费模式,要么Ri开销,要么Cj开销自然想到源点到中间节点为Ri开销,中间节点到汇点为Cj开销,求最小割。兵的关系如何表示?伞兵没有带权值,所以只表示一种行和列的关联关系,所以想到中间节点分为Ri和Cj,每个伞兵链接Ri和Cj,正向边费用为INF,反向边费用为0。关于反向边为什么为0\red{关于反向边为什么为0}关于反向边为什么为0:反向边的作用是修正之前伞兵的...

2019-07-22 08:27:45 205

原创 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 163

原创 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 149

原创 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 155

原创 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 138

原创 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 215

原创 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 198

原创 No.18 - POJ1386 判断联通 找欧拉链

首先判断是否为联通图非联通图谈不上欧拉回路\red{非联通图谈不上欧拉回路}非联通图谈不上欧拉回路欧拉链:起始点,出度比入度多1终止点,出度比入度少1其他点,出度等于入度,所以出度加入度是偶数,满足欧拉回路规律。cin&gt;&gt;string非常慢,字符串读取还是scanf(&quot;%s&quot;)大法好\orange{cin&gt;&...

2019-07-15 17:15:54 234

原创 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 174

原创 No.16 - POJ1149 猪圈与顾客的匹配 最大流

最大流:新增源点0,汇点N+1从源点发出m条边,每条边容量为猪圈m的存货,然后m条边依次流经每个有对应猪圈钥匙的顾客,顾客之间连边为INF,若不同猪圈流经同一个顾客,则边权相加。这些边代表猪圈存货的限制。从每个顾客发出一条边指向汇点,边权为顾客需求。这些边代表顾客需求的限制。此时,在这张图上最大流即可。// ShellDawn// POJ1149// No.16#incl...

2019-07-15 09:30:06 216

原创 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 143

原创 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 191

原创 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 107

原创 No.12 - POJ3259 SPFA求负权值回路 比Floyd快

SPFA求负权值回路:注:SPFA求负权值回路要比Floyd快!\red{注:SPFA求负权值回路要比Floyd快!}注:SPFA求负权值回路要比Floyd快!// ShellDawn// POJ3259// No.12#include<cstdio>#include<cstring>#include<algorithm>#include&lt...

2019-07-14 12:05:09 151

原创 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 115

原创 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 123

原创 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 263

原创 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 138

原创 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 203

原创 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 140

原创 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 115

原创 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 178

原创 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 128

原创 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 135

原创 No.1 - POJ1659 已知节点度构图

给出每个点邻接点的数量,求出邻接矩阵。维护一个堆,不断弹出根,减去后面每个值。// ShellDawn// 2019-07-10// POJ1659#include<cstdio>#include<algorithm>#include<iostream>#include<queue>#include<cstring>...

2019-07-10 15:39:30 158

原创 算法:Tarjan算法

目标:找联通图的关节点及其联通分量时间:邻接矩阵O(N^2)、邻接表O(E)关节点:去掉该点后,剩余图不是个联通图,剩余联通图的数量为所求联通分量。基本思想,采用一次DFS计算每个点在搜索树中的层级。维护:dfn[x]:表示点x在搜索树中搜索次序,依次递增low[x]:表示点x必须通过子节点路径可以到达的最小层次(最祖先节点)。subnets[x]:表示去掉点x后的联通图数量充...

2019-07-09 23:48:44 481

原创 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 196

原创 算法:欧拉公式

凸多面体:顶点数 + 面数 - 棱数 = 2平面图:顶点数 + 区域数 - 边数 = 2

2019-07-09 19:43:31 495

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除