20181020 考试记录
T1:
考场上被读题搞蒙,最后才写,但是尽然AC了(只有一个任务点)
最后发现就是将去时的秒数加上回来的秒数除以二即可
易证
主要考的是读入优化
怎么处理掉每行后面的(+1 +2)
read瞎搞搞即可
T2:
考场上脑袋抽筋想着用后缀和维护
但是并没有打完
最后弃疗
发现自己想少了
不仅要维护一维前缀和,还要维护二维前缀和
然后就建一棵线段树去维护一维与二位
然后询问的是一次函数(n,n-1,n-2,,,,,1)
所以询问是不仅加上一些二维前缀和也要加上一些一维前缀和
eg:
当一个节点存的是3~6时
一维前缀和为a3+a4+a5+a6
而二维前缀和为:
4a3+3a4+2a5+1a6
而要询问3~7时
二维前缀和是不是还要再加上一个一维前缀和,然后再加上a7
因为询问当时5a3+4a4+3a5+2a6+a7
其他的也是这样
时间复杂度:O(MlogN)
一个比较优秀的算法(根号级)
分块大法
考场上我也想过
但是因为没有想到要把那几个都存上
导致也没有写
但是尽然有人写了
也是线段树的思想
去维护
瞎搞搞整块与散块
就行了
时间复杂度:O(M*sqrt(N))
T3:
认为是这套卷子中最水的一道题
相邻两个合并,想到什么
区间dp
然后发现左手啥用都没有,只有右手绝对值之差即可
然后设$dp(i,j)$为从i~j合并时的最小值
所以$dp(i,j)=min(dp(i,j),dp(i,k)+dp(k+1,j)+abs(r_j-r_k)) (i\leq k<j)$
复杂度:O(N^3)
score:100+50+100=250