##刷题笔记## 睁眼看世界了

洛谷大水赛初体验

因为最近一直在刷紫书,而基本上都是看了题解后再动笔开始写,让自己产生一种思路无比顺畅的感觉,结果在今天翻出一个洛谷入门级别的比赛题目尝试了一下才发现自己的

具体比赛见链接

本文记录刷题后的思路和反思

第一题

简单的找规律

因为要求被除数连续变化,所以向下取整的商一定是连续变化的。 因此可以分为两种情况:

  1. 连续的商代表其最大公因式只有 1 1 1
  2. l l l r r r x x x 相除后的商相同,说明最大公因式为这个数本身

第二题

贪心

思考第一次不买最大的,后续换的时候钱就是浪费了,如果不直接换最小的,无法保证最多。如果再换最小的,相当于用次小换最小,还是存在浪费。
因此使用最大直接换最小的,换到不能换为止。

第三题

涉及到概念 m e x mex mex

技巧1:
寻找题目思路首先看数据,本题提供明显暗示在于 0 ≤ a i , b i ≤ n 0\leq a_i,b_i\leq n 0ai,bin,这意味着可以直接枚举获得判断结果,且本题在$O\left ( n \right ) 下是能够通过的。

技巧2
一个的键匹配多个值是可以直接用 v e c t o r vector vector实现,声明方式直接全局变量vector<int> v[manx]即可,使用时在对应键中push_back()即可。

本题核心
如果一个区间的 m e x = a mex = a mex=a ,满足以下条件:

  • 区间未出现 a a a
  • 区间出现 1 / t o a − 1 1 /to a-1 1/toa1

因此若考虑是否存在一个区间的 m e x mex mex 值是 a a a,我们尝试把整个区间以 a a a 为端点划分成若干段,只要每一段内(不含端点 a a a)中出现$ 1 \rightarrow a - 1 $那么就存在一个区间的 m e x mex mex 值是 a a a
如图:
a … a … a … a a \dots a \dots a \dots a aaaa

即只要有一个 … \dots 存在$ 1 \rightarrow a - 1 $ 那么就存在区间 $mex = a $

具体化
当本题的 a i = b i a_i = b_i ai=bi 时,代表这里的数是固定的,而本题需要的结果是
max ⁡ { r − l + 1 − mex ⁡ { c l , c l + 1 , … , c r − 1 , c r } } ( 1 ≤ l ≤ r ≤ n ) \max\{r-l+1-\operatorname{mex}\{c_l,c_{l+1},\dots, c_{r-1},c_r\}\}(1\le l\le r\le n) max{rl+1mex{cl,cl+1,,cr1,cr}}(1lrn)
而在诸个枚举的过程中无需考虑是否为那个 m e x mex mex,因为本题要求的结果是一个最大值,最大值枚举过程中会比较出那个 m e x mex mex(因为同样的区间,枚举0时结果本身会大于枚举1时的,也就找出了 m e x mex mex)。

第四题

线性问题

看数据确定需要线性复杂度,看结果函数
max ⁡ { a l , a l + 1 , ⋯   , a r } − min ⁡ { a l , a l + 1 , ⋯   , a r } − r + l − 1 \max\{a_l,a_{l+1},\cdots,a_r\}-\min\{a_l,a_{l+1},\cdots,a_r\}-r+l-1 max{al,al+1,,ar}min{al,al+1,,ar}r+l1
知道,如果需要得到最优解, m a x max max m i n min min需要在两端, 由后缀的 − r + l − 1 -r + l - 1 r+l1确定,说明所选片段越短越好。
因此可以以左端点为最小值,右端点为最大值扫描一遍,记录最小值时同时将 $ l$ 记录其中。
再以右端点作为最小值,左端点作为最大值扫描一遍。
最后得到最终结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值