2017 SWERC

2017 SWERC

A:Cakey McCakeFace

题目描述:有一个炉每次只能放一个蛋糕,炉的进口和出口各放了一个探测器,当放蛋糕进去时,进口的探测器会记录时刻,当蛋糕做好后,蛋糕从出口出来,出口探测器会记录时间,每个蛋糕做好的时间是一样的。现在探测器坏了,即没有探测到蛋糕也可能会记录时间,探测到蛋糕也可能不记录时间。现在给出进口探测器记录的时刻,以及出口探测器记录的时刻。问蛋糕做好的时间最有可能是多少,即使其满足的记录最多。

solution
将出口时刻与进口时刻两两相减,看哪个时间最多即可。

时间复杂度:(O(n^2))

B:Table

题目描述:给出一个(R imes C)的网格图,其中有些格子被涂成黑色,现在有一些询问(x, y),问网格图中有多少个(x imes y)的长方形,满足长方形内没有黑色的格子,且长方形的边与网格线重合。

solution
待解决。

C:Macarons

题目描述:有一个(n imes m)的网格,有(1 imes 1, 1 imes 2, 2 imes 1)三种规格的砖块,问有多少种方案填满这个网格。

solution
状压(dp)+矩阵乘法。

时间复杂度:(O((2^n)^3logm))

D:Candy Chain

题目描述:有一个字符串(candy),以及(n)个单词(word[i]),每个单词都有一个对应的价值。现在字符串中删掉一些单词,删掉后就能得到相应的价值。字符串删掉一个单词后,字符串会连起来构成一个新的字符串。删单词时,不仅可以删掉原单词,还可以删掉原单词翻转形成的单词。问最多能得到多少价值。

solution
(dp)。单词翻转的问题相当于添加(n)个翻转后的单词。(f[i][j][all][k][p])表示处理字符串中([i, j))这段区间,是否需要全部消掉((all)(true)时为需要全部删掉,反之不需要),单词(k)的区间([0, p))已经在字符串的([0, i))中匹配,得到的最多价值。

  1. (candy[i]==word[k][p]),则搜索状态(f[i+1][j][all][k][p+1])
  2. (word[k])已经匹配完,则返回。
  3. (q in [i+1, j]), 表示([i, m))全部删去,则搜索(f[i][m][true][0][0])以及(f[m][j][all][k][p])

时间复杂度:(O(len^3n))

E:Ingredients

题目描述:给出一个菜谱路线(有向无环图),每种菜的花费以及价值为这种菜所依赖的菜的花费和以及价值和。最终的菜单中每种菜只能出现一次,问在总花费不超过(B)的前提下,价值和最大是多少。

solution
跑一遍(DAG),求出每种菜最终需要的费用以及价值。然后做背包。

时间复杂度:(O(nB))(n)为实际有多少种菜。

F:Shattered Cake

题目描述:有一个长方形,被切成很多个长方形,给出小长方形的长和宽,以及原来长方形的长,求原来长方形的宽。

solution
模拟。

时间复杂度:(O(n))

G:Cordon Bleu

题目描述:有(m)个骑手,(n)支酒,饭店安排一些骑手去拿酒然后会饭店,若骑手拿酒的数目多于(1),则除了第一支酒外,其它酒拿酒时由饭店出发。拿酒的总费用等于骑手走过的距离,而骑手两点之间走哈密顿距离。给出每个骑手的初始坐标以及酒的坐标和饭店坐标,求最少费用。

solution
二分图最大权匹配。二分图右边为酒,左边为骑手和(n-1)个饭店,这样就能保证一定有一个骑手从初始点出发,若匹配到饭店,则是从饭店出发,而从饭店出发的不用管是哪一个骑手。

时间复杂度:无法估计。

H:Kabobs

题目描述:有一个字符集以及(n)个规则。现在要构造一个长度为(m)的字符串,字符串只能由给定的字符集构成,并且要满足那(n)个规则。每个规则是这样的:有两个字符串(A, B)。若构成的字符串存在子串(A),则(A)的后面(不一定要紧接着)一定要有(B)。求能构造多少个字符串。

solution
按照规则构造自动机,按照题解的说法,状态数不会超过(3 imes 10^6)

时间复杂度:(O(3 imes 10^6))

I:Burglary

题目描述:有(n)层书架,每个书架有(m)格,书架上有些格子有钱,相邻两层之间有一些梯子相邻。现在有一个小偷从第一层书架出发偷钱,每个放钱的位置小偷至多会经过一次,最后小偷会回到第一层,而且小偷只能先一直向下走,然后一直向上走。问小偷最多能偷多少钱。

solution
(f[i])表示小偷下到第(i)层然后向上走。(g[i][x][y])表示在(x)下楼梯到第(i)层,在(y)上楼梯回去的最大值。预处理(grab[i][x][y])表示在(x)下到第(i)层后走一遍第(i)层,在(y)回去的最大值。则(f[i]=max(g[i][x][y]+grab[i][x][y])),答案为(max(f[i]))
(g[i][x][y])可以由(g[i-1][x'][y'], grab[i-1][x][x'], grab[i-1][y'][y])算出,但中间会有很多细节,还没码,不太清楚。。。

时间复杂度:(O(nL^4)), (L)为每层楼梯数。

J:Frosting on the Cake

题目描述:有一个不均等的网格图,然后从左到右从上到下依次交替涂上白、黄、红色。问最终每种颜色的总面积。

solution
模拟。

时间复杂度:(O(n))

K:Blowing Candles

题目描述:给出二维平面上的(n)个点,求宽度为(w)的平行线,使得所有点在平行线内,求出最小的(w)

solution
求凸包,旋转卡壳求(w)

时间复杂度:(O(n))

原文地址:https://www.cnblogs.com/GerynOhenz/p/8407305.html