2021-11-11NOIP模拟赛总结
1.时间安排
审题:7:50—8:23
T1转化之后就是求二元一次方程最优解,exgcd可解,但我不会
T2似乎是个DP,还是比较好想的
T3又是树上问题,还不好处理,lca,deep,还有前缀和思想的实现,一个比一个难搞
T1:8:23—9:33
手推了半天exgcd的写法,推不出来,只算出来,a,b,c都要除以gcd(a,b,c)
每
一
次
在
赛
场
上
发
现
知
识
盲
点
都
是
一
次
掉
分
的
注
定
\color{white}{每一次在赛场上发现知识盲点都是一次掉分的注定}
每一次在赛场上发现知识盲点都是一次掉分的注定
T2:9:33—10:12
DP式子很好推,设f[i][j][k]为前i个敌人攻击j次与k结盟的最小代价,转移式为
f
[
i
]
[
j
]
[
k
]
=
m
i
n
(
f
[
i
−
1
]
[
j
]
[
k
]
+
d
e
f
[
i
]
,
f
[
i
−
1
]
[
j
−
1
]
[
k
]
+
a
t
k
[
i
]
)
f[i][j][k] = min(f[i-1][j][k]+def[i],f[i-1][j-1][k]+atk[i])
f[i][j][k]=min(f[i−1][j][k]+def[i],f[i−1][j−1][k]+atk[i])
而当决定与i结盟时,转移式为
f
[
i
]
[
j
]
[
i
]
=
f
[
i
−
1
]
[
j
]
[
0
]
f[i][j][i] = f[i-1][j][0]
f[i][j][i]=f[i−1][j][0],
但是三维DP过不了4000;
自
闭
开
始
.
.
.
\color{white}{自闭开始...}
自闭开始...
T3:10:12—10:34
先是一个dfs求深度和父节点,再是倍增求lca,结果求ans不会运用前缀和思想转化答案得出方式,只能O(n^2log(n))求,实在拉胯
结
果
d
f
s
就
炸
了
更
加
拉
胯
\color{white}{结果dfs就炸了更加拉胯}
结果dfs就炸了更加拉胯
T2:10:34—11:11
我在T3自闭完之后又回来了! 第二维可以通过sort解决,把每个敌人DEF和ATK的差算出,与DEF和ATK以及位置一起存入struct结构体里,并按照差值从大到小排序,可以保证所有能够减少最多代价的ATK都使用了;
重新定义f, f[i][j]为sort后前i个敌人与第j个敌人结盟的最小代价,可得出转移式
f
[
i
]
[
j
]
=
m
i
n
(
f
[
i
−
1
]
[
j
−
1
]
+
a
t
k
[
i
]
(
c
n
t
[
i
−
1
]
[
j
−
1
]
<
k
)
,
f
[
i
−
1
]
[
j
]
+
d
e
f
[
i
]
(
c
n
t
[
i
−
1
]
[
j
−
1
]
=
=
k
)
)
f[i][j] = min(f[i-1][j-1]+atk[i] (cnt[i-1][j-1]<k),f[i-1][j]+def[i] (cnt[i-1][j-1]==k))
f[i][j]=min(f[i−1][j−1]+atk[i](cnt[i−1][j−1]<k),f[i−1][j]+def[i](cnt[i−1][j−1]==k))
至于答案,由于DP是在sort过后生成的序列中进行的,所以第一次sort后记录所在位置,再按照原来位置复原,输出f[n][sort后的位置]
挂
的
只
剩
30
了
哇
呜
呜
\color{white}{挂的只剩30了哇呜呜}
挂的只剩30了哇呜呜
T4:11:11—11:55
感觉可以状压(点只有17),思路是把每个点有几率到达的点也状压到to[i]里,枚举当前图上状态,把当前图拓展,由原有点可以走到的点算其贡献,加到拓展图里,但是贡献的计算不好处理,就只写了去到未去过节点时可能增加的连通块个数,大概率是炸了
T
4
就
炸
得
心
安
理
得
了
T
T
∣
∣
\color{white}{T4就炸得心安理得了TT||}
T4就炸得心安理得了TT∣∣
2.总结
- exgcd复习,只记得能用来求二元一次方程了,求通解和无解情况全判断了,但是炸掉了,只有零分,大佬AC签到题
- DP过不去,贪心拿满分,分治感觉不懂,还是需要复习一下
- 虚树的建立方式写,但是不会写虚树,听完gzx讲完后好像懂了,把序列中相邻两个的lca求出来所生成的序列中包含所有区间内点的lca,这个性质十分重要,根据这个性质可以求出答案
- 看不懂,概率的东西总是不知道怎么转化为等价的模型,它的转化…
3.对比
- 暴力分都没拿,挂分严重,暴力分拿得多的排名都比较高
- T2改了sort排序方式变成七十分了,当时没写对拍,A掉的大佬应该都写了
- T3没算时间,n2logn其实已经炸了,但是当时没算写了很久,在不正确的方向走了太久,以后要在写之前算一下时间复杂度,0分