Part 1 图论
1.Currency Exchange
题意:给定n种货币和m种兑换方式,每种兑换方式有汇率和手续费。给定初始货币种类和数量,问是否可以任意次兑换后实现货币增值(以初始货币计)
思路:链式前向星+spfa,判断是否存在正环
2.Wormholes / Extended Traffic
题意:是否存在负环
思路:链式前向星+spfa
3.Cow Contest
题意:给定n个节点,给出m个节点大小关系,求能确定多少个节点的排名
思路:邻接矩阵+floyd,如果比i小的+比i大的==n-1,ans++
4.Arbitrage
题意:货币兑换能否增值,
思路:链式前向星+spfa,判断正环
5.Candies
题意:n个小朋友,m个关系,AB间关系的意思是A的糖果最多比B少w个,w为关系的权。求1号和n号最多能差多少糖果
思路:差分约束,链式前向星+dij堆优化,第i个同学要求第j个同学的糖不能超过自己k个,即p[j] - p[i] <= k,可得p[j] <= p[i] + k,在单源最短路径的算法中有一步是“若dis[j] > dis[i] + dis[i][j],则 dis[j] = dis[i] + dis[i][j],这样就满足dis[j] <= dis[i] + dis[i][j]
6. 0 or 1
题意:给定一个n维矩阵A,求一个n维矩阵B(矩阵元素为1或0),使得两个矩阵对应位置上的元素相乘的和最小。
思路:邻接矩阵+dij。第一个条件可以看作是点1有一个出度,第二个条件可以看做是点n有一个入度,第三个条件可以看作每个点的入度和出度必须相同。结果需在最短距离与最小二环距离之和中取较小值。
7.Layout
题意:小朋友排队,之间距离满足一定条件
思路:差分矩阵,链式前向星+spfa判断负环
Part 2 并查集
8.Wireless Network
题意:给出n个电脑的坐标和d,距离在d以内的可以互相通信,现在电脑全部坏掉了,给出多个指令,维修某个电脑或者询问两个电脑是否能联通。
思路:并查集模板题,用st[]数组记录被维修的顶点,vis[i]数组记录第i个点是否被维修过,每次维修一个点,遍历所有被维修过的点。
9.The Suspects / How Many Tables
题意:给定n学生,m小组,0号学生是病人,一组中只要有一个病人全部得病,求病人人数
思路:并查集模板题
10.食物链
题意:三类动物A,B,C,构成环形,A吃B, B吃C,C吃A,给出两种说法,计算假话数量。
思路:带权并查集,题解
11.How Many Answers Are Wrong
题意:给出一个区间的长度 N,及 M 个子区间和,如果一个“子区间和”与前面的“子区间和”冲 突, 即为错误,求总错误个数。
思路:带权并查集,题解
12.Supermarket
题意:超市里有N个商品. 第i个商品必须在保质期(第d天)之前卖掉, 若卖掉可让超市获得p的利润.
每天只能卖一个商品.现在你要让超市获得最大的利润.
思路:先将物品按照价格从高到底排列,购买一个就在时间点上做一个标记,指向前一天,如果 查找父亲节点为0天则跳过。
13.A Bug's Life
题意:假设,所有人都是跟异性互动的,判断假设是否成立
思路:带权并查集,用0表示同性,1表示异性,用异或运算更新。