2020.04.18【NOIP提高组】比赛反思总结

这次比赛得了168.2分,No.7,还不错

T1 Fine Dining

赛时

T 1 T1 T1 一眼看过去就知道是最短路,但是想了半天都没有想到有什么方法,最多只能想到暴力,等做完 T 2 、 T 3 T2 、T3 T2T3 再回来做。但仍然没有办法。无奈之下只能打了这个 O ( n m k ) O(nmk) O(nmk) 的方法:先从 n n n 跑最短路,然后暴力枚举每一个点和每一个稻草堆,然后跑最短路再比较一下。得分: 50 50 50

赛后

果然,正解是最短路。
首先跑一遍最短路是毋庸置疑的。
接着, 新建一个源点 n + 1 n+1 n+1 ,然后从从这个源点建一条边连向每个草堆,权值为 d i s 1 i − a i dis1_i-a_i dis1iai,dis1为第一次最短路求出来的答案。接着,再跑一次最短路,得出 d i s 2 i dis2_i dis2i
然后,将 d i s 1 i dis1_i dis1i d i s 2 i dis2_i dis2i 比较。若 d i s 1 i < d i s 2 i dis1_idis1i<dis2i 则输出 0 0 0 ,否则输出 1 1 1 。自己理解一下(ノ ̄▽ ̄)。

T2 Cowpatibility

赛时

T 2 T2 T2 一直没有什么好想法,只能打暴力结果坑了个 18.2 18.2 18.2 分。

赛后

正确做法呢,是容斥原理。由于不是很懂,这里不详细展开。

T3 teamwork

赛时

比赛的时候一看就觉得是dp题,于是
f i f_i fi 为在第i个点的最大值,状态转移方程就是:
f i = m a x ( f [ j − 1 ] + m a x ( a [ h ] ) ∗ ( i − j + 1 ) ) ( 1 < = i < = n , i − j + 1 < = k , i < = h < = j ) f_i=max(f[j-1]+max(a[h])*(i-j+1)) (1<=i<=n,i-j+1<=k,i<=h<=j) fi=max(f[j1]+max(a[h])(ij+1))(1<=i<=n,ij+1<=k,i<=h<=j)
最后输出 f n f_n fn 就可以了

总结

这次还不错!继续努力!

你可能感兴趣的:(纪中比赛反思)