1、玲珑杯#7
2、
A 题意:两个数组a[],b[],操作(ai-1, ai, ai+1)->(ai-1 + ai, -ai, ai+1 + ai),看是否相等。 总结:(ai-1, ai, ai+1)->(ai-1 + ai, -ai, ai+1 + ai)如果考虑前缀和,那么一次操作等效(si-1, si, si+1)->(si, si-1, si+1)。 注意:前缀和。
B 题意:王国攻占游戏,从编号1城市开始,+v表示编号v的城市再连接一个新的城市,编号为当前最大编号加一;-v表示v连接的城市全部失去,并不再拥有。求每次最遥远城市的编号。 总结:建树,删除时dfs删除节点,优先队列维护当前树内深度最大值。 注意:深度,树dfs。
D 题意:n个硬币,每个硬币有个价值val。sum=0,每次取出第i个硬币,sum+=(val[i-1]*val[i]*val[i+1]),val[0]=val[n+1]=1。求可能的最大sum。 总结:区间动态规划, dp[i,j]表示捡起 i~j 区间的硬币, 有:dp[i,j] = max{ dp[i+1,k-1] + dp[k+1, j-1] + value[i] x value[k] x value[j] }。 不会区间dp