2020.12.03【NOIP提高B组】模拟 总结
1.灵知的太阳信仰
这道题目我想到了
d
p
dp
dp方法,发现贪心有问题?
设
f
i
,
j
f_{i,j}
fi,j表示现在
j
+
1
j+1
j+1到
i
i
i是一段的答案。
然后
f
i
,
j
f_{i,j}
fi,j有效仅当
j
+
1
j+1
j+1到
i
i
i的所有
p
p
p不相同。
可以预处理好
h
i
h_i
hi表示
f
i
,
j
f_{i,j}
fi,j有效
j
j
j的最小值。
然后就找到一个
k
k
k,从
f
j
,
k
f_{j,k}
fj,k转移到
f
i
,
j
f_{i,j}
fi,j。
用
h
i
h_i
hi优化循环次数,极端数据
n
=
1000
n=1000
n=1000,
p
i
=
i
p_i=i
pi=i在1s之内可以跑完。
估计40pts。
果然40pts。
正解:
设
f
i
f_i
fi表示以i结尾的段的答案。
预处理
g
i
g_i
gi表示上一个相同质子的位置,可以用链表。
然后转移
f
i
=
m
i
n
j
=
g
i
i
−
1
f
j
+
m
a
x
k
=
j
+
1
i
n
k
f_i=min_{j=g_i}^{i-1}{f_j+max_{k=j+1}^{i}{n_k}}
fi=minj=gii−1fj+maxk=j+1ink
用单调队列优化即可。
总结:
以后想问题不要太复杂。
然后要注重优化
d
p
dp
dp。
4种方法:
(1)单调队列
(2)斜率
(3)四边形不等式
(4)设置更好的状态
2.询问
这道题目用了一个神奇方法。
类似线段合并。
时间复杂度
O
(
m
2
)
O(m^2)
O(m2)。
估计75pts(后面发现就16个测试点,就75%了)。
比赛时调了很久,发现是加入线段的问题。
结束后62.5分。
没有超时。
发现很多问题。
正解:
用并查集维护。
然后用类似合并的方法。
总结:
以后做题要考虑全面。
尽量像一些更优的数据结构去维护。
3.Star Way To Heaven
不会做,主要是没看懂题目。
为什么样例是
1.11803399
1.11803399
1.11803399?
正解:
发现最小生成树最优,用
p
r
i
m
prim
prim做最小生成树,建出来。
然后跑一个
d
f
s
dfs
dfs,就用
O
(
n
2
)
O(n^2)
O(n2)过了。
总结:
要多往别的角度想一想,不懂得话,就猜结论,结论其实认真想很明显。
4.God Knows
这题我用状压
d
p
dp
dp。
一开始用了
d
p
dp
dp,发现有后效性。
然后就设
f
i
,
j
,
k
f_{i,j,k}
fi,j,k表示第
i
i
i次选择
k
k
k状态为
j
j
j的答案。
然后暴力转移
O
(
n
3
×
2
n
)
O(n^3×2^n)
O(n3×2n)。
正解可能是
d
p
dp
dp。
细节好多,一个位运算先后级卡了我好久,一直错误。
估计20pts。
正解:
是最长极上升序列??
然后就
n
2
n^2
n2动态规划。
用线段树接近
O
(
n
)
O(n)
O(n)。
总结:
要仔细思考这道题哪种答案最优。
5.题外话
A组。
第一题打了暴力,没交,估计20分。
第二题变态没看懂。
第三题
n
3
m
3
n^3m^3
n3m3暴力只有5分。
第四题没看懂。
6.总结
这次最高就135pts。
以后得多想别的方法做题,不要死磕一种方法。
结束后122.5,rank1。
就是T2没有到预估分数,可能某一些情况没考虑。