我觉得还是要坚持每天写学习记录!
包括之前没写的也要补一补
毕竟我是个很容易遗忘的孩子,写一写之后看的时候比较容易记起来
今天主要就打了一道题(?)
就是 CF187D BRT Contract
模拟赛T1
自己没想到的点主要是:
①可以用前缀和直接维护,避免偏移来偏移去。本质上而言,是简化信息的存储量,对其进行统一。
②动态开点权值线段树。这道题可以化归为权值区间上查询最早出现位置的问题。
要注意的就是,周期相关问题,实际就是取模取模取模
但要分类讨论。比如说,[sum[i] + g, sum[i] + z - 1](z为周期),视sum[i]的取值范围不同,有三种情况:
{0} <=> [g, z - 1]
[1, z - g - 1] <=> [0, sum[i]] ∪ [sum[i] + g, z - 1]
[z - g, z - 1] <=> [sum[i] + g - z, sum[i] - 1]
另外就是动态开点这种东西空间一定要开够。
潦草地说,只要开不死,就往死离开。
谨慎一点的话,注意log是针对权值而言的:即logW而非logN
这道题而言,g + r <= 2e9(注意是和) log一下就是31
跑一次会有2logW个点,乘上n就是 62 * n
但是不知道为什么64倍n过不了??开到160倍才过
明福大人还没回我,呜呜呜
总结一下,这道题也还是很典型的——a.考察信息重复利用、简化信息的能力 b.动态开点权值线段树空间开够 c.周期分类讨论的严谨性(数学好好学,qwq)
另,今天模拟赛230 / 300,并列第五。还是比较开心的。
(虽然都是在打暴力)(逃)