链接:http://codeforces.com/contest/1016/problem/C
给出一个$2×n$的矩阵,一个人从$(1,1)$出发,每一个格子只能走一次,走完这$2n$个格子后使得带权和最大,问最大的带权和是多少。
容易发现走到最后一个格子之前路径可以分为两个部分:前半部分蛇皮走位,后半部分一个大回环。
但是决定走大回环的位置也是分奇偶的,于是我们预处理出每一行的前缀和$sa_i$和$sb_i$,以及两组后缀和,分别为拐弯前($da_i、db_i$)和拐弯后($ia_i、ib_i$)。
然后我们可以枚举拐弯的结点,并同时记录前面走蛇皮位的结果,同时讨论目前在下还是在上,决定大回环值。
1 |
|