1.19模拟赛总结

总之看上去又是日常挂分场,唉

感觉还是有点可惜的

顺便,现在半边身子还是酸的qwq,虚到自己了

时间安排

7.35-8.00

看题

8.00-8.30

推T1的柿子(详细分析过程写题目分析里了)

8.30-8.40

疯狂回忆线性求逆元怎么求

8.40-9.00

写T1代码

9.00-9.30

不知道为什么和样例对不上,开始自闭查错

9.30-9.45

分析了一下T2,感觉分的比较细,有前三档的大致思路,为了避免细化花费大量时间,于是转头开了T3

9.45-10.00

感觉50档是dfs,写了几个版本都不太对(指样例不过),感觉自己的想法有问题,因为本来就没有很笃定的想法,想的就是记忆化一下,让两个人在取到某个状态时,都是某人在这个状态能取的最大值(可能是取前取后维护的有问题),于是放弃,准备老老实实把T2写了

10.00-11.20

写了T2的前三档,开始开T4

11-20-12.00

基本想明白T4第一档怎么写,开始搞,但越写越复杂,然后最后快交了才调出来(指有了输出),但答案不对,于是就没交。不清楚是我理解的计算方式和题意不同还是中间写假了…

题目分析

T1

还是比较明显的?第一反应是三种dp方法:

  1. 到x级期望花费多少
  2. 已经是x级,距离到n级还期望要多少
  3. 已经是x级,再升一级需要多少花费

先排除了2,因为大等级对小等级的结果有依赖关系,2不好做

然后排除了1,因为会有:x和x-1融合,x失败消失,而回退之后,只需从x-1到x就行,3是最方便维护这个的

所以考虑 f [ x ] = ∑ i = 0 x − 2 f [ i ] + ( 1 − p ) ⋅ ( f [ x − 1 ] + f [ x ] ) f[x]=\sum \limits_{i=0}^{x-2}f[i]+(1-p)·(f[x-1]+f[x]) f[x]=i=0x2f[i]+(1p)(f[x1]+f[x])

维护一个前缀和就好了

看起来很完美对不对?

但其实有很多细节:比如放一把0的剑怎么处理,合成1的时候是两把0剑

最开始就因为合成1剑时时是两把0剑,坏了之后不用再补一级这里忘了考虑而查了好久…

T2

考试的时候 先考虑怎么维护取核心这个过程,于是考虑在状态里记录

考虑dp,状态为 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k] 表示考虑过第 i i i 台机器,剩余 j j j个核心,考虑过 k k k个人之后,最大收益是多少

肯定有同学要问:啊这个,怎么判断某个人能不能用状态里的核心呢?

所以考虑直接把核心,人都按 f f f 从小到大排序,这样后面的人一定可以使用前面的核心

接着考虑怎么优化时空

空间考虑滚动数组

时间考虑,卡住上下界进行dp,即维护前缀核心个数 s s s,每次牢牢卡紧就OK

(然后因为subtask挂麻了,我恨,不开longlong见祖宗

T3

不会啊 真不会啊,直观思路在时间分析那一部分了

T4

感觉小部分分是枚举+状压

枚举路径端点,中间哪些位置用磁铁状压一下

需要树上倍增求lca,再开个数组维护链上存在的点

(大概)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值