A.矩阵转置

输入H行W列的矩阵A。i行j列的数为AijA_{ij},定义另一个矩阵B,Bij=AjiB_{ij}=A_{ji}求B矩阵

拿二维数组做出来发现数据是1e5,那么二维数组的定义就是: x[1e5][1e5],但是数组的最大值为10710^7,而105×105=1010,1010>10710^5×10^5=10^{10},10^{10}>10^7,所以二维数组是会报错的。

所以我们不能用静态数组,要用动态数组(vector)。

先输入矩阵A,再用题目给的方法读入矩阵B,最后输出矩阵B

C.暑假打工

现在有N份一次性工作可供选择。如果你接受并完成第i份工作,你将在完成后的第AiA_i天获得BiB_i元的报酬。 每天你最多可以接受并完成其中一份工作。 但是,你不能重复接受已经做过的工作。 求在从今天起不超过M天的时间内,你能获得的最大总报酬。 你可以从今天就开始工作。

用贪心贪一下:枚举每一天,每一天都选择当天可以完成的报酬最高的工作。用排序完了的数组来找当前报酬最高且不会超时的工作。

如果我们用优先队列的话就不用排序了(^v^)。

E.阶乘与倍数

给定一个大于等于2的整数K。找到最小的正整数N,使得N!是K的倍数。 这里,N!表示N的阶乘。在本问题的约束条件下,可以证明这样的N总是存在。

p是k的一个质因数,e是p出现的次数。我们用二分查找从0到p×e之间找答案N。

F.黄金商人

在KK王国中,有N个城镇,编号为城镇1到城镇N。王国中还有M条道路,编号为道路1到道路M。通过道路i,你可以从城镇 xix_i前往城镇 yiy_i,但不能反向通行。题目保证xi<yix_i<y_i。黄金在这个王国中交易活跃。在城镇i,你可以以AiA_i元的价格购买或出售1公斤黄金。

KK是一名旅行商人,他计划在某个城镇购买1公斤黄金,通过一条或多条道路运输,并在另一个城镇出售这1公斤黄金。请计算这一计划中可能获得的最大利润(即出售价格减去购买价格)。

用拓扑排序来对路线进行排序,再用BFS来一个一个模拟,直到全部找完