首页 > 其他分享 >NOI2024 山东一轮省队集训

NOI2024 山东一轮省队集训

时间:2024-04-03 23:11:36浏览次数:17  
标签:子串 le 题目 log 线段 NOI2024 端点 集训 省队

Day 1

A. fibonacci

题目描述

令 \(S_0=\tt a\),\(S_1=\tt b\),定义斐波那契串 \(S_i=S_{i-1}+S_{i-2}\),加号表示拼接。

给定一个字符串 \(t\),仅由字母 \(\tt ab\) 构成,求 \(S_{\infty}\) 最短的一个子串满足 \(t\) 是该子串的子序列,输出该子串长度。

\(1\le|t|\le1.5\times10^5\)。

题目分析

首先答案一定不超过 \(3n\),因为生成的串不存在超过 \(2\) 个的连续相同字符,其次这个串也不需要生成很长,\(10^6\) 量级足矣。

然后考虑一件很厉害的事情,将 \(S\) 按照拼接方式劈开,得到一个类似线段树的结构:

预处理 \(f[i][j]\) 表示当前 \(t\) 已经匹配了 \(i\) 位,再拿去和 \(S_j\) 匹配之后能匹配到第几位,处理方式和倍增类似。

然后我们就得到了一个 \(O(\log n)\) 判断 \(t\) 是否是 \(S\) 某个子串的子序列的方法:类似线段树那样拆成 \(O(\log n)\) 段小的 \(S_i\),每段利用上面预处理的那个数组向后匹配。

直接双指针扫描所有极短的 \(t\) 可匹配的子区间即可,时间复杂度 \(O(n\log n)\)。

代码

点击查看代码

B. tap

题目描述

平面上有 \(n\) 条线段,第 \(i\) 条线段两个端点分别为 \((l_i,h_i)\) 和 \((r_i,h_i)\),且每个线段中点上方 \(0.5\) 个单位处有个水龙头。

打开某个线段的水龙头后,水会沿着这条线段两端流下去,流到地板或下一条线段,且流到下一条线段后会继续流。

按随机顺序打开水龙头,每次在没有水的线段中等概率选一个打开,问期望打开几次使所有线段有水。

\(1\le n\le 5\times 10^5\),\(\{l_i,r_i\}\) 构成 \(1\) 到 \(2n\) 的排列,\(h_i=i\)。

题目分析

考虑 \(O(n^2)\) 做法,我们将每个线段与两个端点向下延长第一个碰到的线段分别连边,这样会连出来一个 DAG。

转化下期望,根据期望的线性性等于求每个点被选到的概率之和,而一个点如果被选那么此时所有能到达该点的其他点一定都没有被选,也就是设算上点 \(i\) 能到达 \(i\) 的点有 \(C_i\) 个,那么答案就是 \(\sum\frac{1}{C_i}\),可以类比一道叫 Game on Tree 的题。

继续优化需要一个观察,上一下课件里的图:

我们称连向点 \(i\) 左端点的点为 \(i\) 的左父亲,连向点 \(i\) 右端点的点为 \(i\) 的右父亲,为了方便我们在 \(n+1\) 的高度添加一条无限长的线段。

那么图中 \(w\) 这种线段就相当于,从 \(u\) 开始一直跳左父亲和右父亲,最后跳到的同一个点就是 \(w\) 了。

先考虑些琐碎的东西:

  • 建图的优化,从高到低扫描线线段树做区间覆盖。
  • 求左右父亲,从低到高扫描线线段树做区间覆盖。

然后考虑如何计算阴影中的线段数量,对于每条上下的边我们维护其左边有多少线段,右链左边的总数减去左链左边的总数就能算出来了,这个东西显然可以差分一下,然后扫描线树状数组维护。

至于最后的统计答案,倍增维护左右父亲和链上的左侧线段数量和,直接跳即可。

时间复杂度 \(O(n\log n)\),注意空间常数。

代码

点击查看代码

C. polygon

题目描述

有 \(n\) 个实数 \(x_{1},x_{2},\ldots,x_{n}\),\(x_i\) 从 \((0,2^{a_i})\) 的实数中等概率随机,问不存在一个 \(x_i\) 超过 \(\sum x_i\) 的一半的概率。

\(1\le n\le 5\times 10^4\),\(0\le a_i\le 50\)。

题目分析

有一说一,这题真不难。

但是需要多重积分和 NTT,不想写了,有空回来把前一半步骤写了。

标签:子串,le,题目,log,线段,NOI2024,端点,集训,省队
From: https://www.cnblogs.com/los114514/p/18113692

相关文章

  • 蓝桥杯算法集训 - Week 5:树状数组、各类DP算法
    蓝桥杯算法集训-Week5本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、树状数组树状数组是一种数据结构,可以快速地完成以下两个操作:将第i个数加上c快速求前缀和,即任意区间[i,j]的和Ⅰ、代码模板//树状数组长度......
  • 英才集训(野 *史*)
    Day1考试。T1是神秘构造题,让我们构造一个双射\(f\),使得\(A\subseteqf(A)\),其中\(|A|=n-1,|f(A)|=n\)。两者元素均在\([1,2n-1]\)之间。然后好像用Raney引理就可以构造出一个双射:假设\([1,2n-1]\)是一个环,然后假设选过的值是\(+1\),没选过的是\(-1\),这个序列的最后......
  • [集训队互测 2023] R9T2 道路建设
    为什么QOJ上其他人都爆标还原了整颗树,而只有我傻傻改标算。是不是做这道题的除了我都有脑子。感觉像是完全对着硬idea出的,所以正常人做题想法根标方向完全不一样,但是涉及到的技巧都还是挺有用的哈!题意大概是有一颗\(2n\)个点的树,你得知了前\(n\)个点构成的虚树形态,然......
  • 集训队互测2023 通道建设
    本题可以在\(O(n\logn)\)的询问集合大小总和的复杂度内直接求出树的形态,无需利用题目一开始给出的\(n-1\)条虚树上的边。由于返回的只有\(\text{bool}\),使用传统的树剖增量法与随机点分治由于没法快速求出一个点的出边不易于维护(当然其实可以花费更大的代价,但是只能\(O(n......
  • 蓝桥杯算法集训 - Week 4:BFS、并查集、Flood Fill、哈希、单调栈/队列
    蓝桥杯算法集训-Week4本系列随笔用于整理AcWing题单——《蓝桥杯集训·每日一题2024》的系列题型及其对应的算法模板。一、BFSBFS算法复习参考:BFS(Java)广度优先搜索简单介绍、模板、案例(一)Ⅰ、代码模板staticvoidbfs(Troot){//双端队列,用来存储元素D......
  • NOI2024前听课笔记2.0-《思维技巧选讲》by chenxia25
    NOI2024前听课笔记2.0-《思维技巧选讲》bychenxia25性质探索堆砌充分条件和必要条件luoguP10144[WC2024]水镜用形式化语言转化条件等价模型的刻画CF1458DFlipandReverseCF1510HHardOptimizationluoguP8293[省选联考2022]序列变换luoguP8416[THUPC2022决......
  • NOI2024前训练-一些有趣的国内外比赛资源库 #2
    NOI2024前训练-一些有趣的国内外比赛资源库#2QOJ#4399.[CEOI2022]AbracadabraTin是一位著名的魔术师,他的一个经典魔术与洗牌有关。Tin会准备一套牌,总共\(n\)张(保证\(n\)为偶数),各编号为\(1\simn\),一开始的时候牌是乱的且倒扣在桌子上。紧接着他开始表演洗牌,在洗牌......
  • 用Mnist数据集训练一个手写数字识别网络
    Mnist数据集我找了半天才在哔哩哔哩找到一个下载链接,现在的网络下载文件太麻烦了。数据集中的文件格式参考如下链接:https://www.zhihu.com/question/328632765/answer/2621768981我学习了两种方法。第一种是传统的BP神经网络模式;第二种是LeNet。这些代码已放在gitee上开源。......
  • NOI2024前训练-一些有趣的国内外比赛
    NOI2024前训练-一些有趣的国内外比赛luoguP9021[USACO23JAN]SubtreeActivationP你有一棵根为\(1\)的树,顶点标记为\(1\dotsN\)。每个顶点最初都是关闭的。在一次操作中,你可以将一个顶点的状态从关闭状态切换到开启状态,反之亦然。输出一个满足以下两个条件的操作序列的......
  • 小集训
    因为本来写闲话的初衷之一是为了让自己不颓而最近闲话写得少了+颓的多了鉴定为不写闲话导致的开胃小菜gugeguge(看到某人在吃东西):把门打开,知道门上写的啥吗某人:嗯guge:给这些东西都扔了,然后再把门上的字抄50遍…………(过了一会)某人:老师我写完了guge:这下记住了吧某......