1.比赛链接
https://vjudge.net/contest/258024#overview
2.题解
A.最大子矩阵和
题目链接
https://vjudge.net/contest/258024#problem/A
思路
强行枚举行,在将第i行到第j行的每一列加起来,看成一个数,最后就变成了求(j-i+1)个连续数的序列的最大子段和。然后再按照求最大子段和的方法记录一下枚举过程中的最大值就可以求了,目测了一下复杂度有点,,,大约O(n^3)?
数据量不大,似乎可以求。。。
B.Bash游戏 V4
题目链接
https://vjudge.net/contest/258024#problem/B
思路
这题做过的呀 每次只能取上一个人的2倍,打个表找一下规律可以发现是斐波那契数列,然后就可以解决了。。。
C.2条不相交的路径
题目链接
https://vjudge.net/contest/258024#problem/C
思路
度娘了一下似乎是tarjan算法求强连通分量 不会 告辞
D.背包问题 V2
题目链接
https://vjudge.net/contest/258024#problem/D
思路
查了一下题解发现是一个二进制优化的多重背包,优化的方式类似于要在背包里面要放n个苹果,可以将n个苹果分成几个2的次方1,2,4,8,m^2然后n可以由这些来组合
这样 把Cn拆成 Cn=1+2+4+8+...+(Cn-sum)。
sum表示前面的数字之和,例如 按照规律加到第m个数,发现已经大于Cn,那么sum就表示从 1+2+4+8+.....+ 2^(m-2)
大概思路理解了感觉自己并不能写出来。。。背包理解的还是不好。。
E.骆驼与香蕉
题目链接
https://vjudge.net/contest/258024#problem/E
思路
首先假设N无穷大,在最优解的情况下,最后的长度为K的距离一定只走一次,这样问题就转化成了向N-K个点运送K个香蕉,可以知道在N-4/3K处可以刚好最优的向N-K点运送K个香蕉,这里新增的K/3的路要走3遍,总所需要的香蕉数为2K个,同理,下一段K/5的路要走5遍,多消耗K个香蕉,依次类推,这道题目转化为 分解N=K+K/3+K/5+.....+K/(2N-1)+m (这里前面的计算要保留实数)
最后需要的香蕉数ANS=N*K+m*(2N+1)最终结果向上取整,精度不知道会不会有问题。
F.距离之和最小 V2
题目链接
https://vjudge.net/contest/258024#problem/F
思路
由于XYZ三个坐标互不影响,所以只需要分别求出使得距离绝对值之和最小的XYZ值,即可得到结果,把所有点的XYZ值分别排序之后,用后一半的坐标减去前一半的坐标即可,如果点为奇数个 那么中间那个点不算。
G.01组成的N的倍数
题目链接
https://vjudge.net/contest/258024#problem/G
思路
似乎是广搜+深搜。。。不太会QAQ
H.距离之和最小 V3
题目链接
https://vjudge.net/contest/258024#problem/H
思路
一个权值为Wi的点就视为Wi个这样的点,然后从小到大排序用后一半减去前一半的坐标,如果为奇数个中间的点不计算。
I.KGold
题目链接
https://vjudge.net/contest/258024#problem/I
思路
原题题意可以转化成求N条截距为Mi(均为正)斜率为Si(均为正)的直线的前10000个交点
结合了一下题解的思路 就是二分查找一下前10000个交点所需要的X值,然后用一个优先队列存储求出交点,复杂度O(n^2)但是好像由于很多样例都会直接跳过,所以能过?
J.选择子序列
题目链接
https://vjudge.net/contest/258024#problem/J
思路
这道题。。一言难尽。。。为数不多的看了题解才明白题意的题。。。不过看了一下觉得真的好巧妙啊。。。ORZ
附上觉得写得比较明白的题解
https://blog.csdn.net/f_zyj/article/details/52308182