首页 > 其他分享 >NOIP2023模拟8联测29 总结

NOIP2023模拟8联测29 总结

时间:2023-11-07 21:12:46浏览次数:29  
标签:T3 最大值 T2 29 st leq 联测 操作 NOIP2023

NOIP2023模拟8联测29 总结

题目

T1 集合
大意

给出一个序列 \(S\),找出有多少个区间 \([L,R]\),使得 \([L,R]\) 值域的连续长度不超过 \(k\)。

\(n \leq 2*10^5,k\leq n\)

赛时思路

对于区间 \([L,R]\),如果有 \([L',R']\) 符合答案(\(R'\leq R\) 且 \(L \leq L'\)),那么区间 \([L,R']\) 也符合答案,每个点自己可以覆盖的最右边。可以通过维护一条队列,里面的点都是可能的右端点,通过线段树判断,如果可以满足大于 \(k\) 就出队,直到不满足条件,此时的最后一个出队的点就是最右端点。

正解思路

同上。

T2 差后队列
大意

定义差后队列为一个数据结构,支持两种操作:

  • pop 随机删除一个不是最大值的的数。如果只有一个数则删除该数。
  • push 插入一个数(正常插入)。

给定操作序列,求每次删的数的期望,以及每个数期望被删的时间(如果到最后也没被删则删除时间为 \(0\))。

\(n\leq 10^6\)

赛时思路

分开讨论两个问题,第一个问题通过 dp 可以解决,第二个问题考虑每一个可能删除它的操作带来的贡献,为一个若干个概率相乘的式子,类似于正解,唯一的错误在于笔误 \(p_i\) 没有使用 \(1-p_i\)。于是考试时没调出来……

正解思路

博客链接:2023NOIP A层联测22 差后队列 - 彬彬冰激凌 - 博客园 (cnblogs.com)

除去最大值外的元素个数的倒数就是这一轮取到某个数的概率,而最大值是特殊的情况,在被替代之前或作为最后一个数被弹出之前,不参与计算。

对于操作 0 的输出和操作 1 的输出分开处理。

操作 1

设 \(f[i]\) 表示在执行第 \(i\) 个操作时可弹出数的期望大小。

1.加入操作

加入后不成为最大值,\(f[i]=f[i-1]+val[i]\)。

加入后成为最大值,\(f[i]=f[i-1]+mx\),然后更新 \(mx=val[i]\)。(\(mx\) 为最大值)

2.删除操作

设此时队列中除去最大值外元素个数为 \(has\)。

除最大值外每个元素被取到的概率 \(p=\frac{1}{has}\)。

此时期望取到的值 \(ans=p*f[i]\)。

更新 \(f[i]=f[i-1]-ans\)。

\(ans\) 为这一次操作的答案。

操作 0

不难发现,每个元素都有一个开始会被弹出的操作 1,和一定被弹出队列的操作 1。

设第 \(i\) 个弹出操作弹出每个树的概率是 \(p[i]\)。(除最大值外每一个数被等概率弹出,所以 \(p[i]\) 容易得到)

设第 \(i\) 个弹出操作是总操作中第 \(a[i]\) 个操作。

设第 \(u\) 个插入队列的数,可以被弹出的第一个操作 1 是总弹出操作第 \(st_u\) 个,一定会被弹出的操作 1 是总弹出操作的第 \(ed_u\) 个。

那么对于第 \(u\) 个插入的数。如果不是最大值,那么它在第 \(k\ (st_u \leq k \leq ed_u)\) 次操作被弹出的概率是 \(p_k\prod_{j=st_u}^{k-1}(1-p_j)\)。

给期望删除时间的贡献为 \(a_kp_k\prod_{j=st_i}^{k-1}(1-p_j)\)。

第 \(u\) 个插入的数被删除时间的期望为 \(ans_u=\sum_{i=st_u}^{ed_u} a_ip_i \prod_{j=st_u}^{i-1} (1-p_j)\)。

接下来要考虑如何 \(O(1)\) 的求这个式子。

设 \(s_i=a_ip_i\prod_{j=1}^{i-1}(1-p_j)\)。

又有 \(g_1=\frac{1}{1-p_1}\),\(g_i=g_{i-1}\frac{1}{1-p_i}\)。

所以 \(ans_u=\sum_{i=st_u}^{ed_u} s_ig_{st_u-1}=g_{st_u-1}\sum_{i=st_u}^{ed_u} s_i\)。

后面的 \(s_i\) 可以用前缀和 \(O(1)\) 求出。

而上面的数预处理都是 \(O(n)\) 或 \(O(n\log_2n)\)。

总时间复杂度 \(O(n\log_2n)\)。

可能会有点小常数。

T3 蛋糕
大意

有若干列数字排在一起,数字由 1 开始,从上到下递增,可以将他们划分为若干个矩形,要求每个矩形必须包含一个 1。

该矩形的花费为:1.如果只有一列,花费为最大值。2.如果有若干列,花费为每一列的最大值。

求最小划分花费。

\(n \leq 300,a_i \leq 10^9\)

赛时思路

完全没想法,自己的暴力花费方案不满足最低分数要求,初步形成了一个猜测,划分以最长列划分两个区间,或一最低处划分若干区间。

正解思路

考虑区间 dp,以上述最长列划分和最低处划分(证明过程较简单略),设 \(dp[l][r][k]\) 为区间 \([l,r]\) 高度为 \(k\),转移通过上述划分转移。

这样状态数过多,但是可以证明有效状态数在 \(n^2\) 以内,于是 map 记忆化加递推求解即可。

T4 字符替换
大意

给定一个仅包含 012abc? 的字符串,将字符串中的每个 ? 分别替换成 012 之一,将字符串中的每个 a 分别替换成 01 之一,将字符串中的每个 b 分别替换成 02 之一,将字符串中的每个 c 分别替换成 12 之一。也就是说替换成一个 字符串。特别地,如果字符串中不包含 ?,应将其自身视为唯一的替换方案。

求有多少种替换方案,使得替换后的字符串满足:恰好拥有奇数个“好的”非空子串。“好的”的定义为其本质不同的子序列(包含空集)个数为奇数。

赛时思路

一开始没看到子序列,后来看到连暴力都不会写了……

题目思维难度过高。

赛时

看题,分时间。

\(T1:40,T2:50,T3:40,T4:35\)。

看到 \(T4\) 的题面就已经准备写暴力了。

\(T1\) 比预计快 10 分钟,然后想 \(T3\)。

\(T3\) 想不出也在意料之中,留了 25 分钟回头写暴力。

想 \(T2\),大概 15 分钟列出了一个复杂的答案式(错误的),想了下优化以后化到了正常时间复杂度以内。

不是很有自信可以写出来,准备先写 T4,T3 暴力,T4 看到模拟样例看到子序列以后就彻底不会,写不出暴力。

T3 暴力要考虑分割情况,然后又不会……

最后 T3 写了一种特殊情况的表。

回头写 T2,前后写代码加调试 1h,差不多 30 分钟要结束了,T2 的大样例死活过不去,最后检查了一下,结束了。

赛后

T1 AC,T3:20,T2:0。

可能 T2 写出来的人不多,所以拿到了大众分,T3 表还是很有用的。

反思

暴力不要留到最后,可以像今天一样,写完 T1 先开觉得比较难的题,然后去写暴力。

1.对于期望之类推式子题的代码能力还要提升,特别是取模运算的位置和式子间的顺序。

2.虽然 T2 没写出,但是式子还是对的,所以说对于期望类不熟悉的题目还是要有自信。

标签:T3,最大值,T2,29,st,leq,联测,操作,NOIP2023
From: https://www.cnblogs.com/binbinbjl/p/17816019.html

相关文章

  • NOIP2023模拟9联测30 总结
    NOIP2023模拟9联测30总结题目T1上海大意判断是否存在\(n\)正整数,使得\(n^2\)是\(k\)的倍数,且\(n\)不是\(k\)的倍数。如果存在,输出最小的\(n\);不存在输出\(-1\)。\(k\leq10^{12}\)赛时思路对于\(n\)来说,\(n\)一定要包含\(k\)有的质因数,而且\(n\)不......
  • NOIP2023模拟9联测32 总结
    NOIP2023模拟9联测32总结题目T1花菖蒲大意构造一个一度点数等于\(a\),二度点数等于\(b\),总点数小于\(2000\)的树。\(a,b\leq200\)赛时思路构造一条链,去除首位后有\(b\)个节点,这\(b\)个节点接一个一度点,加上首位两个一度点,如果一度点不够,那么将首部改造一个一度......
  • NOIP 模拟13(NOIP A层联测26)
    100+100+20+17,T3按理说应该想到考虑两部分分别的贡献的,明明这个套路很常见。5k:就喜欢这种数据结构专场,多来点。A.origen先前缀和,以下\(p_i\)表示前缀异或和。考虑将一个数\(k\)二进制差分,假设拆成\(2^a+2^b+2^c\),则\(k^2=(2^a+2^b+2^c)\times(2^a+2^b+2^c)\),也就是指数......
  • oracle 删除表空间错误 提示:ora-02429:无法删除用于强制唯一/
    sql>droptablespacezfxfzb;ora-01549:表空间非空,请使用INCLUDINGCONTENTS选项sql>droptablespacezfxfzbINCLUDINGCONTENTSanddatafiles;ora-00604:递归sql层1出现错误。ora-02429:无法删除用于强制唯一/主键的索引。sql>droptablespacezfxfzbinclud......
  • NOIP2023模拟12联测33 总结
    NOIP2023模拟12联测33总结目录NOIP2023模拟12联测33总结比赛过程正解A.构造题目大意思路思路B.游戏题目大意思路C.数数题目大意D.滈葕题目大意思路总结比赛过程先看了一眼\(T1\),发现又是恶心构造题,果断跳过。\(T2\)期望题,这么恶心吗,果断跳过。看看\(T3\)发现好像有......
  • NOIP2023模拟12联测33
    NOIP2023模拟12联测33D.滈葕目录NOIP2023模拟12联测33D.滈葕题目大意思路code题目大意思路放一段题解的材料ABO血型系统是血型系统的一种,把血液分为A,B,AB,O四种血型。血液由红细胞和血清等组成,红细胞表面有凝集原,血清内有凝集素。根据红细胞表面有无凝集原A和B......
  • NOIP2023模拟12联测33 B. 游戏
    NOIP2023模拟12联测33B.游戏目录NOIP2023模拟12联测33B.游戏题目大意思路code题目大意期望题思路二分答案\(mid\),我们只关注学生是否能够使得被抓的人数\(\lemid\)那我们就只关心\(a>mid\)的房间就行了。设学生有\(p\)的概率进入第\(i\)个房间,那么老是去......
  • NOIP2023模拟12联测33 A. 构造
    NOIP2023模拟12联测33A.构造题目大意构造题思路想一种构造方法,使得\(y\)能够凑成尽可能多的答案第一行\(xyry\cdotsr\)第二行\(ryxy\cdotsx\)第三行\(xyry\cdotsr\)把最后一列空出来。此时有\(2202\)个答案如果\(n<2202\)贪心从后往前把\(y\)变成......
  • 文心一言 VS 讯飞星火 VS chatgpt (129)-- 算法导论11.1 4题
    四、用go语言,我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典。开始时该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大。请给出在大数组上实现直接寻址字典的方案。每个存储对象占用O(1)空间;SEARCH、INSERT和DELETE操......
  • NOIP 模拟12(NOIP A层联测25)
    100+100+30+100,T4自己写了Check最后一分钟发现Check锅了,赌了一发替换了部分分,赢!A.构造默认\(n\geq3,n\in\{2x+1,x\inN\},m\geq4\)。考虑构造rrrrr---yyyyy---xxxxx---yyyyy---rrrrr---yyyyy---xxxxx-----------这样有\(\dfrac{n-1}{2}\times(3m-4)\)个......