2022.3.28学习记录

听了一下心理课。

得出的结论是,不好好努力,以后就要过不自由的生活了。

真是吓人。不过,现实如此。

这周的任务:

安心消化DP进阶 and 数学,然后再回过头来慢慢练之前的(计算几何,网络流补充)。

T1 CF731F Video Cards

其实本意是看点杂项练练思维。不过这题好水,QWQ。

a - a % b = floor(a / b) * b 所以可以直接枚举倍数,维护桶。

几个细节:

①枚举的时候应该是不超过las就能继续统计,同时右边界要控制在max ai以内,否则前缀和相减会出负数。

②跟上一个数相等要continue 不然大量1就会导致复杂度爆炸。

T2 [USACO12DEC]Running Away From the Barn G

这题的话,仍然是用到“转换视角”的思路,从我看子树,到我看祖先。我能对多远的祖先产生贡献,一路上的祖先也一定能够产生贡献。所以,倍增跳到最远的祖先,而后树上差分即可。

T3 [NOI2011]嘉年华

意在解决区间DP,掌握其常见优化及“拼凑”的技巧。咱们再推一遍试试。

数据范围[1, 200],显然n三方,考虑区间DP。

首先考虑没有任何活动必定要被安排的情况。

时间的绝对值大小并没有意义,可以离散化降到O(2n)

我们需要的信息是:当前安排到哪里?最多能安排多少活动?同时考虑两个活动会场看起来比较困难,考虑固定一个会场的活动数目。

f[i][j]表示对其中一个会场安排[1,i]范围内共钦定j项活动,另一个活动会场的活动数目最大值。转移显而易见:f[i][j] = max{k ∈ [0, i-1]}f[k][j - s[k + 1 , i]], f[k][j]+ s[k + 1 , i]

(考虑这一步时,我的思维缺陷是:dp的实质是考虑所有状态+模拟决策 模拟决策时我没有想到应该是枚举分配到某会场,导致遗漏了另一个会场的情况)

接下来考虑某一项活动一定要安排的情况。考虑到可以等效于包含这个活动的区间一定要被选中,但由于活动的区间杂在一起无法分割,所以似乎需要n²去枚举这样的区间。

再设置g表示类似定义下的后缀和。

令j,k代表跟s[x + 1][y - 1]在同一个会场的活动数量

转移方程:针对每个i,有ans[i] = max{min(f[x][j] + g[y][k], s[x + 1][y - 1] + j + k)

总复杂度n的五次方?

No,考虑优化。

优化的本质一:重复利用已经计算过的信息。

考虑记忆化对应的ans[x][y],总复杂度降到n四方。

问题转化为如何快速计算对应{x,y,j,k}的结果。

优化的本质二:利用单调性优化。

重新分析仍然没有想到——对于f[l][x],如果x移动到更大的地方,应该由更小的y来取到最大值。

有点类似于冰火战士。注意交点左右两边都是可能的答案,都需要更新。

改了一下,如果j,k代表跟s[x + 1][y - 1]不在同一个会场的活动数目呢?

喜提Wrong Answer一枚。为什么呢?

调整了一下细节:

1.k的枚举,前缀和要从0开始以确保所有活动全部给一个会场可以被枚举到,g同理。(确保所有状态都被cover到)

2.不合法的状态制为-0xcf(建议一次运算不会爆炸的范围内,严格的负无穷其实是128,但一算就炸了)

3.dp数组其实并非严格单调,比如两个重复区间要么同时选要么同时不选,这时候就会出现0、2均合法,但1不合法的情况。解决:似乎是做后缀和?但没有完全理解。

T4 [AHOI2009]同类分布

做这题意在掌握数位DP的解决思路。

调了一晚上......

一开始是递推,后来改魔怔了就改成了记忆化搜索。

几个智障错误:

①lb手滑写成la

②带下去判断是否触界的应该是a[i],而非a[len]

③是≤这个数,所以允许前导零。

④1e18共有19位,数组要开到19。

以后还是老老实实先写记搜吧(有时间再改递推\

T5 花神的数论题

数位DP板子,细节同上题。

不用快速幂就能无事发生

不过欧拉定理相关以后有机会还是了解一下吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值