题目背景 none! 题目描述 由于人类对自然资源的消耗,人们意识到大约在 2300 年之后,地球就不能再居住了.于是在月球上建立了新的绿地,以便在需要时移民.令人意想不到的是,2177 年冬由于未知的原因,地球环境发生了连锁崩溃,人类必须在最短的时间内迁往月球. 现有 n 个太空站位于地球与月球之间,且有 m 艘公共交通太空船在其间来回穿梭.每个太空站可容纳无限多的人,而每艘太空船 i 只可容纳 H[i]个人.每艘太空船将周期性地停靠一系列的太空站,例如:(1,3,4)表示该太空船将周期性地停…
Code: #include<cstdio> #include<vector> #include<algorithm> #include<queue> #include<cstring> using namespace std; const int maxn=100; const int INF=1000000; # define pb push_back int p[maxn],B[50],A[maxn][50]; int s,t; int f…
题意:给定一个分层图,即只能够在相邻层次之间流动,给定了各个顶点的层次.要求输出一个阻塞流. 分析:该题直接Dinic求最大流TLE了,网上说采用Isap也TLE,而最大流中的最高标号预流推进(HLPP)能够直接秒掉这一题.当然还有一种挽救的方式就是首先进行一次贪心预流,然后进行dinic.也是第一次听说还有贪心预流这回事,所以找了一份代码特地学习了一番.具体步骤如下: 1.首先将所有节点按照层次进行排序,对每个节点有in[i]和out[i]两个属性,前者表示能够流入到该节点的流量,后者表示能够…
qwq 首先,我们观察到题目中提到的每天只能乘坐一次航班的限制,很容易想到建分层图,也就是通过枚举天数,然后每天加入一层新的点. (然而我一开始想的却是erf) 考虑从小到大枚举天数,然后每次新建一层. 首先我们先让\(S->第0层的对应的起始节点\),流量为初始人数的边 然后相邻两层之间,若存在航班,则两个之间连流量为次数的边. 对应节点之间连\(inf\)的边,表示可以待在原地. 然后每一层的结束节点,都向T连边,表示每一天都可以有人到达终止节点. 然后直接跑最大流,假设初始人数是\(k\)…
Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以从这儿撤出房间.已知门 一定在房间的边界上,并且边界上不会有空地.最初,每块空地上都有一个人,在疏散的时候,每一秒钟每个人都 可以向上下左右四个方向移动一格,当然他也可以站着不动.疏散开始后,每块空地上就没有人数限制了(也就是 说每块空地可以同时站无数个人).但是,由于门很窄,每一秒…
正题 题目链接:https://www.ybtoj.com.cn/contest/117/problem/2 题目大意 \(n\)个人,每人有\(a_i\)个属于自己的物品.\(m\)次交换依次进行,每次\(x_i,y_i\)两个人可以决定拿不拿自己的一个物品进行交换. 求\(1\)号人最后能拿到最多多少种物品 \(1\leq n,m,a_i\leq 3000\) 解题思路 每种物品只需要一个,所以每种物品的第一个可以视为流量,\(a_i\)可以视为自己的物品处的空位(自己的物品可以不视为自己的…
题目链接 突然发现Dinic很好写诶.. 第一次数组开小了,玄学\(WA\),what?数据范围描述有误? 分层图,每天为一层. 把上一天的每个空间站向这一天连一条流量为inf的边,表示可以原地不动. 把一个周期内上一天上一个和这一天这一个连一条流量为这艘太空船的容量的边,表示去下一站. 然后每次加一天,看什么时候最大流达到\(k\)就行了. #include <cstdio> #include <queue> using namespace std; #define INF 21…
题目链接:[CTSC1999]家园 这个题目我们不是很好在做网络流的时候判断是否有解,因此我们考虑分开来做 对于是否有解的判断,我们唯一需要解决的是飞船的周期停泊问题,对于这个问题,我们可以用并查集解决 我们记源点\(s\)是地球,汇点\(t\)是月球,将一艘飞船上一秒在的星球和下一秒在的星球并入一个集合中,最后判断\(s\)和\(t\)是否在同一个集合中即可 对于第二问,我们可以建立分层图.即对于每一秒的飞船情况建立新边,具体的,我们从上一秒飞船所在的地方向下一秒它将去往的地方连边.这样做也是…
/* 大连热身C题 不要低头,不要放弃,不要气馁,不要慌张 题意: 给一个城市路线图,给定起点给定终点.有n个货物从起点运送到终点.城市的边是无向边. 每个货物每天如果通过某条路,那么这天这条路只能运送这一个货物,另外一个方向也不得运送货物. 问最少需要多少天,使得起点的货物全部运送到终点. 思路: 按照天数将城市节点裂点.即第i天的某个节点. 枚举天数,不断重新构建网络,跑最大流.找到最小的天数使得最大流大于等于n. 看了大神的博客,知道这个东西实际上叫做分层图. */ #include<bi…
题目链接:戳我 对于这种一个点(表面意义上的一个点,比如说一个位置)对应多种情况的(比如说随着时间的推移有着不同的状态,而且这种状态>2),我们考虑在类似于分层图上面跑网络流. 比如说这道题,周期的暴力处理显然是一件很棘手的事情,我们看到数据范围这么小,就可以想一想把每个时间点的图都建出来-- 每个点对应哪一个空间站在第几个单位时间的状态,然后把地球和月球也拆成在该单位时间时的状态. 对于无解的情况,只需要并查集维护,如果不存在有从地球到月亮的路径就是无解了.有解的情况,我们依次枚举答案,在建图…