首页 > 其他分享 >CSP模拟赛 #42

CSP模拟赛 #42

时间:2024-10-22 20:10:55浏览次数:8  
标签:le 标记 纸条 42 序列 位置 区间 CSP 模拟

#40 懒得写了,#41 题目质量过低。

A

有 \(n\) 张长度为 \(m\) 的纸条,每张纸条有 \(k_i\) 个位置有小写字母,其他位置透明。你需要合理从上到下排列这些纸条,使得最终在上方看到的字符串为 \(s\),保证对于每个位置,至少一张纸条在该位置有一个字母。给出方案或无解。

\(1\le n,m\le 10^5, \ \sum k_i \le 2\times 10^5\)

纸条用的越多越好,这是一个类拓扑排序。提取出每张纸条被限制的位置,每放上一张纸条就把所覆盖的位置全标记一下,解放这些位置。对于每张纸条,记录一个 \(cnt_i\) 表示剩余仍被限制住的位置数,把 \(cnt_i = 0\) 的纸条加入队列。

B

给定两个序列 \(a_{1\dots n}, \ b_{1\dots m}\)。你需要分别选择 \(a\) 和 \(b\) 中一段,满足选出的两段长度相等,并且两个子段对应位置上的数相加后是一个回文序列。求最长的回文序列。

\(1\le n, m \le 10^5\)

设提取出来的子段为 \(A,B\),那么 \(A+B = (A+B) ^ R \Rightarrow A - A^R = B^R - B\)。处理出 \(a,b\) 两个序列以及 reverse 后的序列的哈希值即可 \(\mathcal O(1)\) 判断。

回文序列有奇偶两种,对于奇偶两种都做一次二分,转化为判定 \(mid\) 是否合法。

提取出 \(a,b\) 的所有长度为 \(mid\) 的子段,扔进哈希表里判断一下是否有相同的即可。

  • 启示:每一步思路清晰。

C

一个长度为 \(n\) 的排列,有若干个位置未填写。你需要填写这些位置,求出最大的 LIS。

\(1\le n\le 10^5\)

设 \(p_i\) 为前 \(i\) 个位置中未填写的位置个数,\(q_i\) 为 \(1...a_i\) 中未出现的数字个数,那么 \(f_i = \max\limits_{j = 1} ^ {i - 1} \{f_j + \min(p_i - p_j, q_i - q_j)\}\),cdq 分治即可。

D

一个值域为 \([1, n]\) 的整数序列 \(a_{1\dots n}\),满足每种整数最多出现 \(2\) 次。设 \(S[l, r]\) 为 \(a_{l\dots r}\) 组成的可重集,设 \(T\) 为所有 \(S[l, r]\) 组成的集合,求 \(\text{card}(T)\)。

若一个区间 \([l, r]\),存在另一个区间 \([l', r']\) 满足 \(l' < l\) 且 \(S[l, r] = S[l', r']\),那么不合法,考虑用 \(\frac {n(n + 1)}2\) 减去所有不合法的区间。

一个区间 \([l, r]\) 不合法,当且仅当满足以下之一:

  • 存在 \([l', r']\) 满足 \(r' < l\) 且 \(S[l', r'] = S[l, r]\)。

  • 存在 \(l\le l'\le r\),满足 \(S[l', r] = S[l - (r - l' + 1), l - 1]\)。

设 \(b_i\) 为前一个等于 \(a_i\) 的 \(a_j\) 的位置 \(j\)。若不存在,则 \(b_i = -2i\),设 \(c_i = \max(0, b_i)\)。

条件一很好算,令 \([b_i, c_i]\) 为区间,考虑单调栈 + 线段树维护最小值个数。

条件二可以枚举 \(l'\),维护 \(r\) 的信息。设 \([l', r]\) 这一段的 \(c_i\) 的最大值为 \(p_r\),那么区间 \([l = p_r, r]\) 有贡献。一个区间可能贡献多次,我们强制令每个 \(r\) 通过最大的 \(l'\) 来贡献。具体的,在每个 \(r\) 上维护一个标记。\(r\) 位置上统计的最小值为 \(0\) 且有标记,去除标记并对答案造成贡献。当 \(p_r\) 改变时,对应贡献到的区间会改变,所以应重新给这些 \(r\) 打上标记。

我们需要动态求出所有最小值的位置上的标记,去除所有最小值位置上的标记,或者给一段位置重新打上标记,这些都可以用线段树解决。

减去同时满足条件一和条件二的情况,这种情况只可能是 \(l' = l\)。考虑求出满足 \(p_r = l' - 1\) 的 \(r\) 的区间 \([r_0, r_1]\),贡献为这一段区间中最小值为 \(0\) 的位置的标记个数。

启示:更换枚举对象(枚举 \(l'\));最小表示法;容斥拆条件

标签:le,标记,纸条,42,序列,位置,区间,CSP,模拟
From: https://www.cnblogs.com/Sktn0089/p/18493646

相关文章

  • 梦熊 NOIP 十三连测模拟赛记录
    \(\text{Byhhoppitree.}\)\(\textbf{Round1A.}\)Apair题目大意给定平面直角坐标系上的\(n\)个整点,求任意两个不同的点的曼哈顿距离与欧几里得距离的比的最大值,多组询问。数据范围:\(T\le10,n\le10^5\),\(\texttt{1s/512MB}\)。思路分析考虑我们就是要让连线段的角度......
  • 对CSP-S认证知识面的分析
    CCF举办的CSP-S认证从2019年开始,在这几年间,复赛的题目类型各有不同。分析一些客观的过去数据题目难度使用Luogu的题目评级机制,在过去的几年中:难度数量普及-\(2\)普及/提高−\(1\)普及+/提高\(5\)提高+/省选−\(7\)省选/NOI−\(5\)NOI/NOI......
  • 历届 CSP 刷题记录
    \(\texttt{CSP2019}\)J组\(\texttt{T3}\)题目传送门注意到一点:每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。这告诉我们:在一天内,纪念品就是钱,钱就是纪念品,钱和纪念品没有本质区别,这满足动态规划......
  • CSP近四年总结及2024预测
    近四年算法出现频率(按频率排序,且按每年是否出现统计)动态规划dp——\(100\%(\frac{4}{4})\)贪心——\(100\%(\frac{4}{4})\)搜索——\(75\%(\frac{3}{4})\)图论——\(75\%(\frac{3}{4})\)二分——\(50\%(\frac{2}{4})\)基础数据结构——\(50\%(\frac{2}{4})\)......
  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛11
    前言T1不知道啥是冒泡排序,理解了一会儿题面代码发现是啥意思了于是就签了。后面的题都不是很可做,T2、T4计数,T3高级玩意看不懂。但是T2有点可做,但我的DP不知道哪儿假了,暴力还打挂了,不然加个bitset就操过去了。T1冒泡排序\(i\)只能和\(i+k,i+2k,……\)换,对于每一......
  • 生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验
    PAMAP2数据集是一个包含丰富身体活动信息的数据集,它为我们提供了一个理想的平台来开发和测试HAR模型。本文将从数据集的基本介绍开始,逐步引导大家通过数据分割、预处理、模型训练,到最终的性能评估,在接下来的章节中,我们将详细介绍PAMAP2数据集的特点、数据预处理的关键步骤......
  • 2024.10.22模拟赛反思
    2024.10.22模拟赛反思怎么感觉题目越简单打的越差啊?\(T1\)没什么好说的,\(8\)分钟就做完了。主要问题主要就是在\(T2\)上。其实本来\(10\min\)就想到贪心怎么做了,但是发现直接贪心有点问题,所以就一直在想怎么解决。可能是前几场比赛考的比较难的缘故,我就一直在想能不能用......
  • 2024 信友队 CSP-J 第二轮(复赛)模拟赛
    A火柴#include<cstdio>intcnt[10]={0,1,2,3,3,2,3,4,5,3};charnum[10][10]={"","I","II","III","IV","V","VI","VII","VIII","IX"};......
  • 10.22 模拟赛
    2025--炼石计划--10月16日--NOIP模拟赛#13【订正】-比赛-梦熊联盟复盘T1模拟了一小下就会做了。中间模数写错了(998244353少了个最后的3)调了几亿年。还是很快就切了。T2一眼不可做啊。部分分好像很多,放弃正解做部分分。\(k=1\)显然是给总司令的,输出\(T\)个N......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛11
    Rank考前不挂就是赢A.冒泡排序签,简单的有点格格不入。发现错误代码实质上是将原序列划分成了若干个连通块,并对每个连通块做一遍排序。并查集维护,\(\mathcal{O(n)}\)扫一遍合并连通块,然后按顺序输出即可。复杂度最坏\(\mathcal{O(n\logn)}\)。点击查看代码#include<b......