![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM---------------图算法
programmy
本人擅长Ai、Fw、Fl、Br、Ae、Pr、Id、PS等软件的安装与卸载,精通CSS、JavaScript、PHP、C、C++、C#、java、Ruby、Perl、Lisp、python、Objective-C、ActionScript等单词的拼写,熟悉windows、Linux、Mac、Android、IOS等系统的开关机。欢迎各大公司HR与本人联系。
展开
-
UVA 10004 Bicoloring(二分图 交叉染色)
UVA 10004 Bicoloring题目大意判断一个无向图是否是二分图分析在交叉染色的过程中判断一个图是否是二分图。 如果一个图是二分图,那么一定存在一个染色方案将所有点染成两种染色之一,满足任何边的两端都不同色可以通过深搜来求解。初始时所有点都未染色,先给定一个点某一种颜色,然后从这个点出发进行深搜。比如从u出发开始深搜的过程中,搜到了v,有三种情况: v未染色:将v染成和u不原创 2017-02-28 11:46:48 · 504 阅读 · 0 评论 -
POJ 2186(强连通分量 缩点)
POJ 2186题目大意N头牛,现在给出M组关系(A,B)表示A喜欢B,喜欢具有传递性,问有多少头牛是被所有牛喜欢。分析对于每个强连通分量中,牛一定是互相喜欢的,所以我们可以先找出所有的强连通分量再缩点。缩点后,如果一个节点能被所有节点走到,那么这个节点一定是叶子节点,出度为0(如果出度不为0必然为形成环),而且这样的节点只能有一个(因为这个节点不喜欢其他任何一个节点)总结几天没AC了,一直卡在PO原创 2017-03-03 17:21:51 · 353 阅读 · 0 评论 -
POJ 1201 Interval (Spfa 差分约束系统)
POJ 1201 ZOJ 1508 Interval 题目大意有一个序列,题目用n个整数组合[ai,bi,ci] [a_i,b_i,c_i]来描述它,[ai,bi,ci][a_i,b_i,c_i]表示在该序列中处于[ai,bi][a_i,b_i]这个区间的整数至少有cic_i个。如果存在这样的序列,请求出满足题目要求的最短的序列长度是多少。如果不存在则输出 -1。(0≤ai≤bi≤50000,1≤原创 2017-02-16 22:10:02 · 508 阅读 · 0 评论 -
POJ 1275 Cashier Employment(差分约束 建模 二分)
POJ 1275题目大意一个商店每天24个时段各有一个需要的职工数Ri(0≤Ri≤23)R_i(0\le R_i \le 23),有n个职工(0≤n≤1000)(0 \le n\le 1000)可以用,每个职工从一个各自的开始时间tit_i连续工作8小时,问最少需要多少职工能满足需要,不能满足输出无解。分析尝试以不同的方式去描述一个问题是着手分析的一个很好的方式,将一个问题数学化也是一种常用的方法。原创 2017-02-20 11:19:08 · 401 阅读 · 0 评论 -
POJ 1364 King(差分约束简单题 判环)
POJ 1364题目大意有n个变量a1...ana_1...a_n,有若干形如(asi+asi+1+...+asi+ni−1+asi+ni>/<ki)(a_{s_i}+a_{s_i+1}+...+a_{s_i+n_i-1}+a_{s_i+n_i} >/< k_i)的不等式,问你是否存在满足约束条件的一组解。分析原问题先做一个前n项和处理就变成了典型的差分约束了。设sumi=a1+a2+...+ais原创 2017-02-20 18:28:52 · 658 阅读 · 0 评论 -
POJ 3352 Road Construction(边双连通)
POJ 3352题目大意一个有 N 个景点的岛,任意两个景点都有道路相连,当道路施工时,游客便不能在该道路上通行,问至少再增加几条道路可以使得在任一条道路维修的情况下,游客都能从岛上任意一个景点到达另一个景点。分析重述一下问题也就是问“至少增加几条边能使一个无向图变成边双连通”如果将各个边双连通分量都缩成一个点,那么整个图就变成了一颗树要使得一棵树变为一个双连通图,有一个定理: 增加的边数 =原创 2017-02-27 13:33:08 · 378 阅读 · 0 评论 -
POJ 3177(双连通分量 有重边)
POJ 3177题目大意题目和3352基本一样,只是多了可能有重边这个条件分析题目分析见POJ 3352 Road Construction(边双连通) 重边的处理我在tarjan算法中用了一个flag标记,从儿子v开始搜索搜到父亲u,此时如果flag为0表示这是树枝边(就是从u搜到v的边)跳过,为1表示已经处理过树枝边了说明这是一条重边。代码#include<cstdio>#include<i原创 2017-02-27 19:54:09 · 743 阅读 · 0 评论 -
POJ 1236(tarjan 强连通分量 缩点)
POJ1236题目大意问,对于一个DAG(又向无环图): 1.至少要选几个点,才能从这些点出发到达所有点 2.至少加入几条边,就能从图中任何一个点出发到达所有点分析先求DAG的强连通分量数,再缩点,可以用tarjan算法来做。 第一个问题:不难想到答案就是缩点之后入度为0的点的个数 第二个问题:设缩点后入度为0的个数是n,出度为0的个数是m,至少添加边的条数就是max(n,m)代码#incl原创 2017-02-22 22:11:31 · 2300 阅读 · 1 评论 -
POJ 3592 Instantaneous Transference (强连通分量 缩点 spfa最长路)
POJ 3592题目大意在一个N*M的地图上(2≤N,M≤40)(2\le N,M\le 40),每个格子有三种情况: X:表示这个地方有X个金币 *:这个地方是一个虫洞,可以瞬移到另一个地方(会给出瞬移到哪个地方),也可以选择不瞬移 #:这个地方是石头不能走现在从左上角出发,每一步只能往右或下走,问最多能得到多少金币分析首先容易想到的是将这个矩形地图转化成有向图的问题。那原创 2017-03-04 15:47:34 · 359 阅读 · 0 评论 -
POJ 1330(LCA tarjan 并查集)
题目大意给一个有根树,问你两个点的最近公共祖先分析虽然题目只查询一次,但用这道题来学习一下LCA的tarjan写法代码#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<cstdlib>#include<queue>#include<map>#include<algorithm>#inc原创 2017-03-04 22:22:52 · 469 阅读 · 0 评论 -
POJ 2516 Minimum Cost(费用流 建图)
POJ 2516题目大意有N个供给商,M个雇主,K种物品。每个供给商对每种物品的的供给量已知,每个雇主对每种物品的需求量的已知,从不同的供给商输送不同的货物到不同的雇主手上需要不同的花费,又已知从供给商Mj送第kind种货物的单位数量到雇主Ni手上所需的单位花费。 问:供给是否满足需求?若是满足,最小运费是多少?分析可以看出k个物品之间是相互独立的,有两种方法:1是把每个点拆成k个点,2是对每个物原创 2017-02-21 13:13:53 · 3827 阅读 · 0 评论 -
POJ 2195(费用流)
POJ 2195题目大意给你一个N∗MN*M的地图,上面有房子”H”,人“m”,空地“.”。房子和人数相同,将人移动一格花费为1,问将将地图变为一个房子上恰好一人的最小花费。(在移动的过程中可以出现多个人在一个格子上面的情况)。分析这道题出现在费用流的专题里做法就很明显了。人是多源点,房子是多汇点,建图如下: 超级源点到每个人的容量为1,花费为0;房子到超级汇点也是容量为1,花费为0.原创 2017-02-21 17:04:57 · 1296 阅读 · 0 评论 -
POJ 2135(费用流基础题)
POJ 2135题目大意有N个点M条双向边的图,求从起点1到终点N的两条边不相交的路径,要求这两条路径长度的总和最小,输出最小长度分析肯定不能通过贪心的方法先求一条再求一条。我们可以换一种方式来描述问题:有两个人要从节点1走到节点2,要求他们不能走同一条道路,问他们走的总路程的最小值是多少。费用流问题(MCMF)是解决每条边有容量限制,每条边上有单位流量的花费,求在一定流量下的最小花费的问题。通过重原创 2017-02-20 22:50:51 · 1126 阅读 · 1 评论 -
POJ 3159 Candies 差分约束系统(dijsktra+前向星)
POJ 3159题目大意n个变量,满足m组约束条件,约束条件形如:xb≤xa+c,求x_b\le x_a+c,求max(xn−x1)max(x_n-x_1)分析要求最大值应该将约束条件转化为≤\le 的形式转化后条件变成:xb−xa≤cx_b-x_a\le c 然后就插入a指向b权值为c的边,从x1x_1出发到xnx_n的最小值一开始写了个前向星+bfs版的spfa+STL queue=TLE,以为原创 2017-02-19 09:34:15 · 559 阅读 · 0 评论 -
HDU 1814(染色)
题目大意 有n个党派,每个党派2个人,这2*n个人之间存在一些敌对关系,现在要从中选出n个人组成一个委员会,要求满足: 1.每个党派中选1个 2.委员会中不存在敌对关系分析题目中第i个党派的成员编号是2n-1与2n,我们将编号减去1就可以通过x^1来得到和x在相同党派的另一个人了。如果a与b敌对,那么a一定与b^1相同颜色。 用染色法来解决这个问题,设1为选中的颜色,2为不选原创 2017-08-05 10:57:39 · 324 阅读 · 0 评论