2016年四川省赛补题

4/10

赛后反思

C题WA了三发。。。。反思一下wa了赶紧找队友帮忙调错。。。。不要单干。。。。。

A. Nearest Neighbor Search [Megumin]

求出区间[x1,x2]内的数与x0差的绝对值的最小值,对y和z也求出对应的值,然后加起来即为所求

E. Coins [Megumin&wqf]

分类讨论

首先讨论面值为1和2的硬币的有无,若两者都有,则能取到从1到\(a+2*b+3*c\)的所有面值;若有1没有2,需要考虑1的个数是否大于1,若大于1,则能取到从1到\(a+3*c\)的所有面值,否则只能取到模3余1的面值(c+1种)和3的倍数(c种),共\(2*c+1\)种;若1和2都没有,答案显然是c;若有2没有1,若没有3,答案就是b,否则情况比较复杂,这里将能取到的面值按模3的余数分开考虑:3的倍数有\(b/3*2+c\)种,模3余1的,首先用两个2得到4(若没有两个2,这部分答案为0),然后用剩下的2和3构成3的倍数,于是这部分答案为\((b-2)/3*2+c\),模3余2的,首先拿出一个2,然后用剩下的2和3构成3的倍数,这部分答案是\((b-1)/3*2+c\),将三部分答案相加即可

I.Longest Increasing Subsequence [wqf补 难]

先$5!$枚举一下排列,这样LIS的长度大小就确定了 然后$dp[i][j]$表示第$i$个数取$j$的LIS的个数,转移方程为$dp[i][j] = \sum_{k=0}^{j-1 else j}dp[i-1][k]$ ,可以用前缀和优化一下 其中当比较排列rk[i-1]与rk[i]的时候会是两种情况,一种把小于j的情况放前面,另一种是把小于等于j的情况放后面 例如order是1, 2 dp[2][2] += dp[1][1] (对应实际序列1,2); order是2 1的时候 dp[2][2] += dp[1][1]+dp[1][2] (对应实际序列2,1和2,2), 并且相等的情况只出现在这里,可以保证没有重复计数; 代码: http://paste.ubuntu.com/24386827/

J. Matrix Transformation[wqf]

用双向循环 十字链表把矩阵串起来,每次操作其实只会改变 O(n) 个地方,暴力维护下就行。

代码:
http://paste.ubuntu.com/24386890/

posted on 2017-04-15 16:56  ACGO  阅读(226)  评论(0编辑  收藏  举报

导航