Week 3 题目总结(图论、并查集)

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表示异性,用异或运算更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值